linux线程一直在增加,在.net core中遇到的奇怪问题:内存与线程数一直增长

一个 asp.net core 站点,之前运行在 linux 服务器上,运行一段时间后有时站点会挂掉,有一次的症状是 asp.net core站点在高并发下出现的“EMFILE too many open files”问题 。

昨天将该站点升级至 .net core 1.1(之前用的是 .net core 1.1 preview1)并部署到 windows 服务器的 IIS 上,在同一个负载均衡下部署了2台服务器。

今天早上发现其中一台服务器出现503错误,登上服务器一看,该站点的进程内存占用竟然有1.2G,而同一负载均衡中另外一台正常的服务器内存占用只有40多M。然后看了一下进程中的线程数,惊呆了——竟然有8000多个线程!而另外一台正常的服务器只有20多个线程。

接着将这台服务器从负载均衡上摘下来,这时出现了更加让人惊呆的现象——在没有请求的情况下,这个 asp.net core 站点进程的内存占用与线程数一直在增长。就像在代码中写了一个死循环,在循环中不停地创建线程。

9:30左右是1.2G内存8000多个线程,到了11:09左右内存增长到1.8G,线程数增长到1.3万,而且还在持续增长。

4d59ee0eeb64af2d320b854ea56a4152.png

不仅内存与线程数在增长,而且CPU也一直在波动,这可是在没有任何请求的情况下,谁在偷偷地干活?

7e4f9981251d4cfa76d00c4522b59665.png

从目前分析的情况看,罪魁祸首可能是 EnyimMemcachedCore (支持.net core的memcached客户端,是我们从 EnyimMemcached 移植过来的),EnyimMemcachedCore 用到了 Socket 池,问题可能出在 Socket 池部分,源代码在 github 上(EnyimMemcachedCore源代码)。

目前不知道从何处下手排查这个问题,很期待您的高见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值