Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何修复Azure应用程序服务中的线程不足?_Multithreading_Azure_Azure Web App Service - Fatal编程技术网

Multithreading 如何修复Azure应用程序服务中的线程不足?

Multithreading 如何修复Azure应用程序服务中的线程不足?,multithreading,azure,azure-web-app-service,Multithreading,Azure,Azure Web App Service,我在上有一个应用程序服务,用作我的移动应用程序的后端。我通常没有很多用户,但几个月前,有一个用户高峰,使得应用服务一次无法使用几个小时 从这些指标中,我可以看出应用程序服务在CPU和内存方面都很好,但当问题发生时,我们确实看到线程数越来越高。 似乎每个请求都会占用另一个线程,但没有一个线程被释放,因此在此期间不会完成任何请求。当这种情况发生时,如果我们重置应用程序服务,线程数会立即下降,但随后会再次爆炸。 我现在唯一的缓解措施就是在这种情况发生时扩大服务范围,这需要几分钟的时间,并且会花费我大量

我在上有一个应用程序服务,用作我的移动应用程序的后端。我通常没有很多用户,但几个月前,有一个用户高峰,使得应用服务一次无法使用几个小时

从这些指标中,我可以看出应用程序服务在CPU和内存方面都很好,但当问题发生时,我们确实看到线程数越来越高。 似乎每个请求都会占用另一个线程,但没有一个线程被释放,因此在此期间不会完成任何请求。当这种情况发生时,如果我们重置应用程序服务,线程数会立即下降,但随后会再次爆炸。 我现在唯一的缓解措施就是在这种情况发生时扩大服务范围,这需要几分钟的时间,并且会花费我大量的金钱和精力


我在线程池中设置了最小和最大线程,还限制了每个CPU的最大并发请求数,但没有任何帮助。我可以用5个最常用的API重现这个问题。它们都对同样托管在azure上的SQL数据库进行异步调用。我使用async/await并在调用后处理上下文。我使用实体框架作为我们的ORM

我付费的应用程序服务计划应该能够轻松处理负载,只要没有突然出现的请求高峰,它就不会出现问题。但当服务宕机时,它可能会一次宕机数小时,重新启动或停止服务根本无济于事。我们已将后端恢复到旧版本,问题仍然存在

我可以通过用请求爆破后端来很容易地重现这个问题。在下面你可以找到一个发生了什么的例子。向我们指出的一件事是,无论我们发送多少请求,我们从未看到Http队列长度增加


我面临着同样的问题,我们在DB上没有异步/等待访问。 线程使用量的增加完全是随机的


您是否可以使用Redis缓存和StackExchange?我把我的fiches放在上面(在我的例子中)。

很明显,这是代码中的一个问题。你的问题是什么?我同意蒂亚戈的看法。问题似乎出在你的代码上。我可以用5个最常用的API重现这个问题。它们都对同样托管在azure上的SQL数据库进行异步调用。我使用async/await,上下文在调用后被释放。我使用实体框架作为ORM。我面临同样的问题,一个朋友也向我报告了同样的奇怪行为。在这种情况下,这两个项目完全不相关。扩展应用程序服务并不能完全消除这个问题。线程数高的计算机未从负载平衡器中删除,因此对该计算机的所有请求都会不断失败。@WilsonVargas您能找到解决方案吗?