Java-SocketException-Too-many-open-files

Posted by AlstonWilliams on February 17, 2019

在通过ab进行压力测试时,遇到了这个问题.并发请求数为10000.

因为每个Socket都对应一个文件,所以同时这么高的并发请求势必会导致创建很多文件.而默认情况下,Linux中,用户最多可创建的文件数为1024.可以通过ulimit -n来查看.

了解其原因之后,我们就能想到解决方案了.无非就是增加用户可创建的文件数.通过编辑/etc/security/limits.conf文件,添加user_name - nofile max_open_file一行:

然后重启一下机器,就可以看到用户最大可打开文件数为20000了.

这时再并发请求10000就不会有问题了.