【发布时间】:2022-08-16 00:35:24
【问题描述】:
我有一个本质上是一个抽认卡网络应用程序,托管在 Azure 的免费版本上,并用 ASP.NET (C#) 编码。它被少数人(40 人左右)使用。如下图所示,CPU 时间稳定了一段时间,然后在 4 月 1 日左右开始稳步增加。问题是我现在达到了 Azure 每天 60 分钟的 CPU 时间限制,导致我的应用程序达到该配额时关闭。
我不知道在此图表上显示的任何时间段内发生的任何更改,无论是代码还是网站配置。
快速说明:预计会出现大峰值,我不认为它们与问题有关。长话短说,在比赛当天,该应用程序的使用率明显高于平时。这在每场比赛中每两周发生一次。我不相信它是相关的,因为它从未在不久之后出现稳定增长。所以尖峰是正常的;逐渐增加不是。
我已经多次重新启动网络服务。我已经重新部署了代码。我已经关闭了 C# 代码中可能会增加 CPU 时间的许多功能。我检查了网站的请求计数,在第一次峰值之后它实际上比之前低。即使有一段时间没有请求(或者像每小时 <5 个请求),CPU 时间仍然很高。因此,这与请求计数或未处理的线程(无论如何都会在 web 服务重新启动时被清除)无关。
最后一件事:我还将这个完全相同的代码部署到另一个 Azure 网站,我多年来一直将其用作测试网站。测试网站没有这个问题。测试网站连接到相同的数据和所有内容。唯一不同的是,它不是其他用户使用的,所以请求数要低得多,而且不会逐渐增加。这让我相信这在我的 C#/ASP.NET 代码中不是问题。
我的理论是 Azure 中的某些配置导致了这种情况,但我不知道是什么。在 CPU 时间开始增加的时候,我没有改变任何东西,但我看不出还有什么可能。任何想法都将不胜感激,因为我已经为此绞尽脑汁数周了,这导致我的生产站点每天停机数小时。
编辑:此外,此时 CPU 使用率并不高。因此,虽然 CPU 应该长时间运行,但它在任何给定时刻都不会接近 100% CPU。所以这也不是 CPU 使用率高的问题。
-
使用 Kudu 或 Azure Portal 拍摄您的工作进程(
w3wp.exe或任何您的主机进程)的快照,然后下载它并在 VS 中打开它,它会显示您的线程在哪里。
标签: c# azure azure-web-app-service