Socket accept failed Too many open files

本文探讨了在两台配置相同的服务器上,一台出现'TooManyOpenFiles'异常的情况。通过测试发现,A服务器能稳定运行,而B服务器因处理请求速度慢于连接速度,导致打开文件数过多并最终报错。分析指出,B服务器的Intel Celeron J1900 CPU可能性能不足,影响了请求处理效率。进一步的观察显示,B服务器的文件打开数持续上升,而A服务器保持稳定。
摘要由CSDN通过智能技术生成

前提:两台不同的服务器,系统配置相同,部署了两个相同的简单java服务(只打印一句话,以及为了看是否请求均分而计数操作),服务配置相同

测试:客户端工具jmeter

现象:A服务器不会报错,B服务器一段时间后报错:
2021-01-08 14:58:18.179 ERROR [http-nio-8001-Acceptor] org.apache.tomcat.util.net.Acceptor [175] : Socket accept failed
java.io.IOException: Too many open files
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:421)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:249)
at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:463)
at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:73)
at org.apache.tomcat.util.net.Acceptor.run(Acceptor.java:95)
at java.lang.Thread.run(Thread.java:748)

溯因:lsof -p 查看文件打开数,A服务器的打开文件数几乎不变,不报错;B服务器的打开文件数一直会上升,直到报错

猜测:A服务器的CPU是4核 Intel® Core™ i5-4590 CPU @ 3.30GHz,B服务器的CPU是4核Intel® Celeron® CPU J1900 @ 1.99GHz,B服务器性能太差,导致处理请求的速度慢于接收连接的速度

结论:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值