首页 新闻 会员 周边 捐助

asp.net core站点在高并发下出现的“EMFILE too many open files”问题

0
悬赏园豆:50 [已解决问题] 解决于 2017-01-11 15:34

今天生产环境下部署在Linux服务器上的站点突然无法访问,日志中出现大量的这样的错误:

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

这个问题与在.net core中遇到的奇怪问题:内存与线程数一直增长是同一个问题。


问题补充:

估计是TCP连接过多引起的

dudu的主页 dudu | 高人七级 | 园豆:30939
提问于:2016-11-14 11:38
< >
分享
最佳答案
0
dudu | 高人七级 |园豆:30939 | 2016-12-04 14:42
其他回答(2)
0

libuv出来的错误,估计是linux下的KestrelServer有bug。

提交issues呗

收获园豆:20
czd890 | 园豆:14486 (专家六级) | 2016-11-14 13:05
0

ulimit -n看下是 1024吗?如果是的话需要修改 /etc/security/limits.conf文件,在末尾增加 

* soft nofile 数字
* hard nofile 数字。

 

或者直接运行下面的

echo -ne "
* soft nofile 65536
* hard nofile 65536
" >>/etc/security/limits.conf

 

然后重新登陆

收获园豆:30
Zachary_Fan | 园豆:762 (小虾三级) | 2016-11-17 23:57

ulimit -n 的结果是 65535

支持(0) 反对(0) dudu | 园豆:30939 (高人七级) | 2016-11-18 09:30

@dudu: 

该站点的最大并发数有可能达到这个数值吗?

支持(0) 反对(0) Zachary_Fan | 园豆:762 (小虾三级) | 2016-11-18 09:32

@Zachary_Fan: 当时的异常情况可能造成达到了这个数值

支持(0) 反对(0) dudu | 园豆:30939 (高人七级) | 2016-11-18 10:08

@dudu: 那要么继续放大这个值再观察看看是否还有错误,要不然得加机器了~

支持(0) 反对(0) Zachary_Fan | 园豆:762 (小虾三级) | 2016-11-18 10:17

@Zachary_Fan: 升级到 ASP.NET Core 1.1 之后没再出现这个问题

支持(0) 反对(0) dudu | 园豆:30939 (高人七级) | 2016-11-18 10:27

@dudu: 嗯,不过理论上如果真的是并发数达到这个值的话,应该和升级没有关系,还会继续有这个问题 。。。不过祝您好运~

 

我网上找了篇文章给您参考下~ 

http://blog.sina.com.cn/s/blog_5f66526e0100xl5t.html

支持(0) 反对(0) Zachary_Fan | 园豆:762 (小虾三级) | 2016-11-18 10:31

@dudu: 是的,我最上面回复让您执行的语句就是配置这个设置的。如果并发数的确达到目前设置的65535的话,要么继续放大这个配置,或者在负载均衡加机器了。

支持(0) 反对(0) Zachary_Fan | 园豆:762 (小虾三级) | 2016-12-05 17:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册