当我们的程序大量创建 tcp 连接时可以 会遇到 Too many open files
错误 一般在我们的程序创建 1k 左右的连接时会出现这个错误。
不应当。一个 ip 拥有 65525 个端口,理论上不应该创建 1k 就不足了。
我们可是使用 netstat -nat | grep -i "80" | wc -l
查看指定端口的连接数这里的 80 请换成你自己需要查询的端口。
使用 ulimit -Sn
查看软件限制,这时终端 会输出一般会 1024 。
ulimit -Hn
查看硬件限制,这个我们不用管,如果你使用的新内核输出的值时会大于 65535 的。
因为这个限制的存在我们在 linux 下一个用户最多可以打开 1024
个文件。没错 在 linux 下创建 TCP 连接就是打开文件。
那么我我们可以 把它扩大一点吗?
当然是可以的新建 /etc/security/limits.d/custom.conf
并写入以下内容后重启,修改结果不要大于 65536.
* soft nofile 32768
然后我们再次使用 ulimit -Sn
时输出的就是 32768 了 这样的话单用户最大创建 tcp 连接就改成了 32768 了。