我们的Web应用程序(托管在Azure中的Web应用程序中)遇到HTTP队列长度的峰值 . 每次HTTP队列长度出现峰值时,Web应用程序都会崩溃,我们要么等待Azure重启Web应用程序本身,要么我们自己重新启动Web应用程序 . 这经常发生 .

Web应用程序确实使用SignalR,并且正在运行的Web作业调用Hub上的方法,然后Hub将数据广播到连接的客户端 . 在这个阶段只有少数用户,所以我们还没有实现SignalR背板 .

以下是HTTP队列长度中的峰值示例

HTTP Queue Length Spikes

请注意,我们尝试将Web应用程序放在其自己的应用程序服务计划(P3)中,并且它仍然表现出相同的行为 . 内存百分比远低于此处显示的内存百分比,大约在20-40%之间,但仍然在HTTP队列长度中经常出现峰值崩溃 . 因此,我不认为这是引起问题的内存问题 .

在尝试诊断此问题一段时间后,我们决定将应用程序(相同代码)托管到VM(仍在Azure中)并将URL更改为指向VM而不是Web应用程序 . 新VM只是非常基本的,只有3.5GB内存 .

自从迁移到VM以来,应用程序运行良好,没有崩溃,并且比具有大型专用服务计划的Web应用程序执行得更好 .

因此很难说它是代码,当我们运行perfmon和其他指标时,所有内存和队列长度似乎在提供请求后迅速下降 . 而在WebApp中,这似乎不断增长,直到它崩溃 .

只是想知道是否有其他人在Web Apps中遇到过这种行为?我们将继续在VM中托管,但最初在Web应用程序中托管PaaS更具吸引力 .

如果它有所帮助,有关技术堆栈的更多信息是:HTML5,C#,Web API 2,Kendo MVVM,SignalR,Azure SQL Server,Web作业处理服务总线主题 .

亲切的问候,

斯特凡