日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...

發(fā)布時間:2023/12/4 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一個 asp.net core 站點(diǎn),之前運(yùn)行在Linux 服務(wù)器上,運(yùn)行一段時間后有時站點(diǎn)會掛掉,在日志中記錄很多“EMFILE too many open files”的錯誤:

Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -24 EMFILE too many open files

后來將這個 asp.net 站點(diǎn)部署到 Windows 服務(wù)器的 IIS 上。運(yùn)行一段時間后,發(fā)現(xiàn)其中一臺服務(wù)器出現(xiàn)503錯誤,登上服務(wù)器一看,該站點(diǎn)的進(jìn)程占用的內(nèi)存竟然有1.2G,而同一負(fù)載均衡中另外一臺正常的服務(wù)器內(nèi)存占用只有40多M。然后看了一下進(jìn)程中的線程數(shù),驚呆了——竟然有8000多個線程!而另外一臺正常的服務(wù)器只有20多個線程。

將這臺服務(wù)器從負(fù)載均衡上摘下來之后,出現(xiàn)了更加讓人驚呆的現(xiàn)象——在沒有請求的情況下,這個 asp.net core 站點(diǎn)進(jìn)程的內(nèi)存占用與線程數(shù)一直在增長。就像在代碼中寫了一個死循環(huán),在循環(huán)中不停地創(chuàng)建線程。

再后來內(nèi)存增長到1.8G左右,線程數(shù)增長到1.3萬左右,而且還在持續(xù)增長。

不僅內(nèi)存與線程數(shù)在增長,而且CPU也一直在波動,這可是在沒有任何請求的情況下,誰在偷偷地干活?

強(qiáng)制結(jié)束進(jìn)程后恢復(fù)正常,但運(yùn)行一段時間(通常是1天時間)后又會出現(xiàn)同樣的問題。非常奇怪!

從目前分析的情況看,罪魁禍?zhǔn)卓赡苁?EnyimMemcachedCore?(支持.net core的memcached客戶端,是我們從 EnyimMemcached 移植過來的),EnyimMemcachedCore 用到了 Socket 池,問題可能出在 Socket 池部分,源代碼在 github 上(EnyimMemcachedCore源代碼)。

windbg分析進(jìn)程dump文件顯示的線程情況:

0:000> .load C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.0.1\sos.dll

0:000> !threads

ThreadCount: 8014

UnstartedThread: 0

BackgroundThread: 8013

PendingThread: 0

DeadThread: 0

Hosted Runtime: no

發(fā)現(xiàn)大量線程中存在?coreclr!Thread::DoAppropriateWaitWorker 這個操作:

!uniqstack

# Child-SP RetAddr Call Site

00 00000056`ed5ad118 00007ffa`080e13ed ntdll!NtWaitForMultipleObjects+0xa

01 00000056`ed5ad120 00007ff9`f1dc885e KERNELBASE!WaitForMultipleObjectsEx+0xed

02 00000056`ed5ad400 00007ff9`f1dc8a0d coreclr!Thread::DoAppropriateWaitWorker+0xfe

03 00000056`ed5ad4b0 00007ff9`f1dca52f coreclr!Thread::DoAppropriateWait+0x7d

04 00000056`ed5ad530 00007ff9`f1e3b726 coreclr!CLREventBase::WaitEx+0x7f

05 00000056`ed5ad580 00007ff9`f1e3b636 coreclr!AwareLock::EnterEpilogHelper+0xca

06 00000056`ed5ad640 00007ff9`f1f92b18 coreclr!AwareLock::EnterEpilog+0x62

07 00000056`ed5ad6a0 00007ff9`f1f92131 coreclr!AwareLock::Contention+0x258

08 00000056`ed5ad760 00007ff9`92388e2b coreclr!JITutil_MonContention+0xb1

該問題還在進(jìn)一步排查中。。。

原文:http://www.cnblogs.com/dudu/p/6127374.html

總結(jié)

以上是生活随笔為你收集整理的服务器线程数一直增加,.NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。