linux线程一直在增加,在.net core中遇到的奇怪问题:内存与线程数一直增长
一個(gè) asp.net core 站點(diǎn),之前運(yùn)行在 linux 服務(wù)器上,運(yùn)行一段時(shí)間后有時(shí)站點(diǎn)會(huì)掛掉,有一次的癥狀是?asp.net core站點(diǎn)在高并發(fā)下出現(xiàn)的“EMFILE too many open files”問題 。
昨天將該站點(diǎn)升級(jí)至 .net core 1.1(之前用的是 .net core 1.1 preview1)并部署到 windows 服務(wù)器的 IIS 上,在同一個(gè)負(fù)載均衡下部署了2臺(tái)服務(wù)器。
今天早上發(fā)現(xiàn)其中一臺(tái)服務(wù)器出現(xiàn)503錯(cuò)誤,登上服務(wù)器一看,該站點(diǎn)的進(jìn)程內(nèi)存占用竟然有1.2G,而同一負(fù)載均衡中另外一臺(tái)正常的服務(wù)器內(nèi)存占用只有40多M。然后看了一下進(jìn)程中的線程數(shù),驚呆了——竟然有8000多個(gè)線程!而另外一臺(tái)正常的服務(wù)器只有20多個(gè)線程。
接著將這臺(tái)服務(wù)器從負(fù)載均衡上摘下來,這時(shí)出現(xiàn)了更加讓人驚呆的現(xiàn)象——在沒有請(qǐng)求的情況下,這個(gè) asp.net core 站點(diǎn)進(jìn)程的內(nèi)存占用與線程數(shù)一直在增長(zhǎng)。就像在代碼中寫了一個(gè)死循環(huán),在循環(huán)中不停地創(chuàng)建線程。
9:30左右是1.2G內(nèi)存8000多個(gè)線程,到了11:09左右內(nèi)存增長(zhǎng)到1.8G,線程數(shù)增長(zhǎng)到1.3萬,而且還在持續(xù)增長(zhǎng)。
不僅內(nèi)存與線程數(shù)在增長(zhǎng),而且CPU也一直在波動(dòng),這可是在沒有任何請(qǐng)求的情況下,誰在偷偷地干活?
從目前分析的情況看,罪魁禍?zhǔn)卓赡苁?EnyimMemcachedCore?(支持.net core的memcached客戶端,是我們從 EnyimMemcached 移植過來的),EnyimMemcachedCore 用到了 Socket 池,問題可能出在 Socket 池部分,源代碼在 github 上(EnyimMemcachedCore源代碼)。
目前不知道從何處下手排查這個(gè)問題,很期待您的高見。
總結(jié)
以上是生活随笔為你收集整理的linux线程一直在增加,在.net core中遇到的奇怪问题:内存与线程数一直增长的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运行 命令 linux,Linux基本命
- 下一篇: linux的ip地址是127,Linux