未处理的异常如何导致 Azure 应用服务缓慢?

How unhandled exceptions leads to Azure app service slowness?

当我查看性能和可用性部分下的 Azure 应用服务诊断时,他们指出 4XX 和 5XX 错误可能会影响应用程序的性能和可用性。

请解释异常与网络应用程序性能之间的关系,以及异常如何降低网站性能。

这不仅特定于 Azure,而且如果您将应用程序部署到任何地方(在云端或本地),这也很常见。异常会导致大量问题,尤其是在性能方面。

有一句话

No matter how high the performance of your program is, as long as you did not handle the "exceptions", it's broke.

您需要缓存数据、处理异常、释放资源等,以避免性能问题和站点崩溃。例如,在 javascript 应用程序中 回调通常分配内存,积累工作但涉及很多额外的样板,并且可能很难实现线程安全。

正如 Sajeetharan 正确提到的那样,异常会导致大量问题,我喜欢这句好话。对于表现出的症状-页面加载缓慢,有时 超时.

此类问题往往一般是由应用层面的问题引起的,例如:

  • 请求耗时较长。
  • 应用高memory/CPU
  • 应用程序因异常而崩溃

只是为了隔离问题,与 resource/infra 相关 - 您可以确保启用“Always On” 功能,并且您可以 扩大规模 应用服务计划。

一般 - 解决此类性能问题 可以分为三个不同的任务,按照这个非常有用的文档中提到的顺序(为了清楚和方便起见,在这里突出显示其中的一些):

  1. 观察和监控应用程序行为
  2. 收集数据
  3. 缓解问题

应用服务在每一步都为您提供多种选择:

1A - 跟踪服务运行状况 - 每次出现服务中断或性能下降时,Azure 都会公布。

1B - 监控你的应用程序 - 这个选项可以让你查明你的应用程序是否有任何问题。

1C - *监控 Web 端点状态 - 端点监控从地理分布的位置配置 Web 测试,测试 Web URL 的响应时间和正常运行时间。

1D - 使用扩展程序监控应用程序性能 - 您还可以使用站点扩展程序监控应用程序性能。

2A - 启用 Web 服务器诊断 - 您可以启用日志,例如 - 详细错误记录、失败请求跟踪和 Web 服务器日志记录

2B - 启用应用程序诊断 - 从应用服务收集应用程序性能数据

2C - 您可以启用 Application Insights Profiler 以开始捕获详细的性能跟踪。

2D - Remote Profiling 如果 CPU 进程的使用率很高并且您的进程 运行 比预期慢,或者延迟的 HTTP 请求高于正常水平。

2E- 利用 Kudu 控制台 - Kudu 是一个诊断控制台,如果您的应用程序抛出第一机会异常,您可以使用 Kudu 和 SysInternals 工具 Procdump 创建内存转储。这些内存转储是该过程的快照,通常可以帮助您解决更复杂的应用问题。

3.Scale-up/Scale-out & Recycle - 根据应用要求,您可以按需扩展资源和 recycle/restart。

对于冗长的回复深表歉意,只是分享了几个选项来缩小问题的范围。希望以上信息对您有所帮助!让我们知道进展如何,我们非常乐意帮助您 investigate/rectify 进一步解决问题。