近期遇到一个问题,写的代码同一时间维护的tcp链接过多,导致linux的文件句柄达到上限,出现Too many open files的问题。网上大多回答混乱,在这里做个总结,提醒日后使用。
1.查看命令
ulimit -a
2.临时的修改,关闭终端失效
ulimit -n 204800
或
ulimit -SHn 204800 //S代表soft,超过该值则warning;H代表hard,超过则error;这是同时设置两个值,也可以分开设置
ulimit -Sn 102400
ulimit -Hn 204800
3.永久设置
[处理非图像登录]
sudo vim /etc/security/limits.conf
打开后,在文件最后添加:
* soft nofile 204800
* hard nofile 204800
* soft nproc 204800
* hard nproc 204800
ubuntu系统下,一定要把*改为你自己的用户名。好像是识别不了通配符。centos就没问题。
保存退出。
[处理非图像登录]
然后,在下面的两文件中加入:DefaultLimitNOFILE=204800
sudo vim /etc/systemd/user.conf
sudo vim /etc/systemd/system.conf
保存退出即可。
4.重启机器
重启后,测试下
输入 ulimit -n ,查看系统级是否修改成功
输入 su - usrname -c 'ulimit -aHS' -s '/bin/bash' 查看用户级是否修改成功
输入 cat /proc/[PID]/limits 查看进程级是否修改成功
注意:同一时间打开文件上限数量,根据自己的实际需要设定。
————————————————
一年之内毫无半点成绩,想起来做人真是没趣。
原文链接:https://blog.csdn.net/qq_26039331/article/details/115253574