配置更改或交换后 Azure Web 应用程序崩溃并停机数小时
Azure web application crashes after config change or swap and stays down for hours
自从我们将大多数用户转移到我们的 asp.net Web 应用程序 运行 作为 Azure 中的 Web 应用程序后,我们遇到了一个间歇性问题,所有用户的应用程序都会崩溃,响应只有超时或 502/503 错误。这通常发生在我们进行了配置更改(例如更改门户中的应用程序设置)或在部署期间交换插槽之后。非常令人沮丧的是,在它最终自行解决之前,似乎没有办法将其取回。在中断期间和中断之前,诊断看起来很好——最小 CPU 和内存使用。很多错误,但它们是大多数超时错误。此问题无法通过横向扩展或向上扩展来解决,应用程序重新启动无效。即使杀死 w3wp 也不会恢复该应用程序。 CPU 在中断期间获取的配置文件显示失败的请求,但没有其他内容。
有谁知道这里会发生什么或者对我们可以尝试什么有任何想法吗?
当 运行 客户的 .NET 进程在 Azure Web App 环境中运行时,它可能会由于代码或性能问题而间歇性崩溃。当此类 crash/exception 自动发生以进行进一步调查时,捕获故障转储非常重要。
这里有一个CrashDiag Site Extension
,当间歇性未处理的异常发生时,它可以很容易地帮助我们捕获必要的数据。要捕获异常的转储,你可以参考这个 article.
正如您所说,您只会收到超时或 502/503 的错误消息,这里是 article 您可以参考进行故障排除。
这个问题实际上是由我们的 ORM 写入 TraceWriter 引起的。由于部署过程中的更改,生产环境中的配置标志已保留。 TraceWriter 是线程安全的,因此创建锁并阻止 CPU。繁忙的使用时段会导致对 TraceWriter 的请求开始排队,从而导致应用程序无响应。
自从我们将大多数用户转移到我们的 asp.net Web 应用程序 运行 作为 Azure 中的 Web 应用程序后,我们遇到了一个间歇性问题,所有用户的应用程序都会崩溃,响应只有超时或 502/503 错误。这通常发生在我们进行了配置更改(例如更改门户中的应用程序设置)或在部署期间交换插槽之后。非常令人沮丧的是,在它最终自行解决之前,似乎没有办法将其取回。在中断期间和中断之前,诊断看起来很好——最小 CPU 和内存使用。很多错误,但它们是大多数超时错误。此问题无法通过横向扩展或向上扩展来解决,应用程序重新启动无效。即使杀死 w3wp 也不会恢复该应用程序。 CPU 在中断期间获取的配置文件显示失败的请求,但没有其他内容。
有谁知道这里会发生什么或者对我们可以尝试什么有任何想法吗?
当 运行 客户的 .NET 进程在 Azure Web App 环境中运行时,它可能会由于代码或性能问题而间歇性崩溃。当此类 crash/exception 自动发生以进行进一步调查时,捕获故障转储非常重要。
这里有一个CrashDiag Site Extension
,当间歇性未处理的异常发生时,它可以很容易地帮助我们捕获必要的数据。要捕获异常的转储,你可以参考这个 article.
正如您所说,您只会收到超时或 502/503 的错误消息,这里是 article 您可以参考进行故障排除。
这个问题实际上是由我们的 ORM 写入 TraceWriter 引起的。由于部署过程中的更改,生产环境中的配置标志已保留。 TraceWriter 是线程安全的,因此创建锁并阻止 CPU。繁忙的使用时段会导致对 TraceWriter 的请求开始排队,从而导致应用程序无响应。