微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

centos7 limit不生效 解决方法

目录

1 记录未修改之前的ulimit值

2 修改配置文件

3 查看修改后的ulimit值

4 安装nginx

5 现象

6 原因

7 解决办法

8 用到的相关命令


总结:1.修改 /etc/systemd/system.conf  2.修改 /etc/security/limits.conf

问题简述:Centos7下修改系统的最大文件打开数的时候,对系统启动的进程不生效

问题详述:Centos7下需修改系统最大文件打开数为100000,进程数为50000,于是做了如下操作

说       明:此问题只出现在centos7下,centos6版本不存在此问题

1 记录未修改之前的ulimit值

2 修改配置文件

vim  /etc/security/limits.conf   在后面添加

*      soft    nofile  100000
*      hard    nofile  100000
*      soft    nproc   65535
*      hard    nproc   65535

重启机器,修改 /etc/security/limits.conf 里的配置后,需重启机器才能生效

3 查看修改后的ulimit值

4 安装Nginx

在这里看起来一切都很正常,也许一不小心就入坑了。为了对比现象,需要安装两个Nginx一个源码安装,一个yum安装

源码安装:(简单安装,只是为了验证和测试,不指定安装路径认是在/usr/local/Nginx下)     

wget http://Nginx.org/download/Nginx-1.8.1.tar.gz
tar -zxvf Nginx-1.8.1.tar.gz
cd Nginx-1.8.1
./configure
make && make install

yum安装

yum -y install Nginx

5 现象

1)先启动源码编译的Nginx,并查看进程号及limit值,如下

启动Nginx:   /usr/local/Nginx/sbin/Nginx

查看进程:     ps -ef |grep Nginx

查看某个进程的limit值: cat /proc/进程号/limits

 2)yum安装Nginx启动

启动方法:systemctl start Nginx.service ,然后查看进程号及其limit值,如下:

到这里问题就来了,为什么通过systemctl启动的Nginx对limit的设置不生效 ?????

然后查看了1号进程的limit值( cat /proc/1/limits ),发现也是对修改/etc/security/limits.conf文件里的最大文件打开数和最大进程数没有生效

6 原因

仔细查看/etc/security/limits.conf文件的注释,说明了对系统服务不生效

7 解决办法

在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是用户实例使用的。

vim /etc/systemd/system.conf

DefaultLimitNOFILE=100000
DefaultLimitNPROC=65535

重启后,systemctl start Nginx启动,然后根号进程号查看资源限制,得到

8 用到的相关命令

1)查看当前进程的最大可以打开的文件

 cat /proc/进程ID/limits

2)查看当前进程实时打开的文件

 lsof -p PID |wc -l

3)查看系统总限制打开文件的最大数量

cat /proc/sys/fs/file-max

注:若设置不生效,查看包含的目录下的配置文件是否覆盖,如/etc/security/limits.d/下的文件是否覆盖了/etc/security/limits.conf设置的值 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐