问题描述
由于项目性能测试需要上百万 tcp 连接,程序报错:
too many open files
查阅资料发现是系统参数 最大文件打开数 file-max 限制
于是根据网上资料修改 /etc/security/limits.conf
# 在文件末尾添加以下两行
* soft nofile 2000000
* hard nofile 2000000
重启服务器后发现无法 ssh 连接,查阅资料发现是 limits.conf 中配置的最大打开数超过了 /etc/sysctl.conf 中的最大文件打开数
fs.file-max = 1000000
fs.nr_open = 1000000
解决方法
如果目前已经无法连接 ssh
需要进入 linux 单人模式将 limits.conf 中的数值修改回正常范围,详细步骤点击 参考链接
如果目前仍然可以 ssh
/etc/sysctl.conf 以下两项参数,数值设定根据实际需求,我这里需求 300 万 fs.file-max = 3000000
fs.nr_open = 3000000
/etc/security/limits.conf 在最后面添加以下两项参数,数值需要小于上一步所设定的数值,我这里设置为 200 万 * soft nofile 2000000
* hard nofile 2000000