linux

Centos 7.x主机下的打开limits资源限制,Systemd不生效

发布时间:3年前热度: 2620 ℃评论数:

一、背景

    Centos 7.x环境部署服务时遇到了问题,在/etc/security/limits.conf文件中对打开文件nofile做了限制,重启系统进入用户下是生效,但是在Centos 7.x环境的Systemd下的服务却没生效。

二、原因

   经分析发现/etc/security/limits.conf只对pam登录用户起作用,而若通过systemd启动服务,此配置文件不起作用。.

limits.png

三、解决

   对于systemd启动的服务,按照优先级(后者覆盖前者)起作用的是:

/etc/systemd/system.conf :设置系统级服务全局默认值(需重启系统生效),如:

[root@VM-32-96-centos systemd]# vi /etc/systemd/system.conf 

...

DefaultLimitNOFILE=50000

...

服务本身,如mysql进程:

% vi /usr/lib/systemd/system/gateway-go.service

[Service]

...

LimitNOFILE = 20000

...

[root@VM-32-96-centos systemd]# systemctl deamon-reload

[root@VM-32-96-centos systemd]# systemctl restart gateway-go

检查:


[root@VM-32-96-centos systemd]# cat /proc/12010/limits 

Limit                     Soft Limit           Hard Limit           Units     

Max open files            20000                20000                files 

...

注意:上面只是争对系统级服务,即使用systemctl start/stop管理的服务,而对于systemctl --user管理的用户级服务(非常少用,且需要特殊配置),环境变量或limits限制由如下文件限制:


1、~/.config/systemd/user.conf:对于有HOME的用户,可再此目录配置;

2、/etc/systemd/user.conf:用户级别默认配置;

3、/etc/systemd/system/[email protected]/:对于所有用户级别管理的服务生效;

4、/etc/systemd/system/user@<uid>.service.d:对于特定用户生效;

limits,Systemd不生效

手机扫码访问