Linux默认描述符限制1024
,生产环境明显不够用,一般需要通过修改内核参数来进行优化,方法如下。
修改ulimit限制
修改/etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
* soft nproc 65535
* hard nproc 65535
修改/etc/security/limits.d/20-nproc.conf
* soft nproc 65535
root soft nproc unlimited
以上配置只针对登录用户,而对systemd管理的服务不起作用
在Centos7系统中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。因此登录用户的限制,通过/etc/security/limits.conf与/etc/security/limits.d下的文件设置即可。
对于systemd service的资源设置,则需修改全局配置,全局配置文件放在/etc/systemd/system.conf和/etc/systemd/user.conf,同时也会加载两个对应目录中的所有.conf文件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf。system.conf是系统实例使用的,user.conf是用户实例使用的。
修改 /etc/systemd/system.conf
echo 'DefaultLimitNOFILE=100000' >> /etc/systemd/system.conf
echo 'DefaultLimitNPROC=65535' >> /etc/systemd/system.conf
DefaultLimitNOFILE=100000
DefaultLimitNPROC=65535
重启后生效
查看当前进程的最大可以打开的文件数
cat /proc/进程ID/limits