Ubuntu20.04如何修改同一时间打开文件数上限以及解决Too many open files问题
近期遇到一个问题,写的代码同一时间维护的tcp链接过多,导致linux的文件句柄达到上限,出现Too many open files的问题。网上大多回答混乱,在这里做个总结,提醒日后使用。
查看命令
ulimit -a
临时的修改,关闭终端失效
ulimit -n 204800
或
ulimit -SHn 204800 //S代表soft,超过该值则warning;H代表hard,超过则error;这是同时设置两个值,也可以分开设置
ulimit -Sn 102400
ulimit -Hn 204800
永久设置
[处理非图像登录]
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
保存退出即可。
重启机器
重启后,测试下
输入 ulimit -n ,查看系统级是否修改成功
输入 su - usrname -c 'ulimit -aHS' -s '/bin/bash' 查看用户级是否修改成功
输入 cat /proc/[PID]/limits 查看进程级是否修改成功
注意:同一时间打开文件上限数量,根据自己的实际需要设定。
参考链接:
Too many open files 的解决办法
Ubuntu 18.04 LTS ulimit 修改不生效的问题
ulimit永久生效设置