linux 7 services设定,CentOS 7 systemd service 设置limit,不生效问题

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

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

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

1:记录未修改之前的ulimit值

1d02c97f3573?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

2:修改配置文件

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

···

root soft nofile 1048576

root hard nofile 1048576

soft nproc 65535

hard nproc 65535

···

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

3:查看修改后的ulimit值

1d02c97f3573?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

4:在这里看起来一切都很正常,也许一不小心就入坑了。为了对比现象,需要安装两个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

1d02c97f3573?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

2)yum安装nginx启动

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

1d02c97f3573?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

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

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

6:原因

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

1d02c97f3573?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

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启动,然后根号进程号查看资源限制,得到

1d02c97f3573?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

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设置的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值