[转帖]CentOS 7 systemd service 设置limit,不生效问题

centos,systemd,service,设置,limit,生效,问题 · 浏览次数 : 0

小编点评

## Centos7下修改系统的最大文件打开数问题解析 **问题描述:** Centos7下修改系统的最大文件打开数的时候,对系统启动的进程不生效问题。 **分析步骤:** 1. **记录未修改之前的ulimit值:** - 使用 `ulimit -n` 命令查看当前系统打开文件的最大数量。 - 将该值保存到 `image.png2` 中。 - 修改配置文件 `/etc/security/limits.conf` 的 `nofile` 和 `nproc` 属性,并将修改后的值写入 `image.png2` 中。 2. **重启机器并查看修改后的ulimit值:** - 查看 `image.png2` 中的配置值。 - 使用 `ulimit -n` 命令查看当前系统打开文件的最大数量。 3. **查看修改后的ulimit值:** - 使用 `cat /proc/1/limits` 命令查看系统主进程的 `nofile` 和 `nproc` 属性的值。 4. **使用不同安装方式启动nginx服务:** - 使用 `wget` 下载并安装源码版本的 Nginx。 - 使用 `yum` 安装源代码版本的 Nginx。 5. **现象现象:** - 只有使用 `systemctl start` 启动 Nginx时,限制设置不生效。 6. **分析 `limits.conf` 文件注释:** - 注释说明系统服务资源限制的配置只适用于通过 PAM认证登录用户的资源限制。 - 由于 `systemd` 服务不参与 PAM 认证,所以设置无效。 7. **解决办法:** - 在 `/etc/security/limits.conf` 文件中设置系统服务的 `nofile` 和 `nproc` 属性,并将修改后的值写入 `image.png2` 中。 - 使用 `systemctl start` 启动 `nginx.service` 服务。 8. **验证设置生效:** - 再次使用 `ulimit -n` 命令查看系统打开文件的最大数量。 - 确保 `image.png2` 中的配置值已生效。

正文

https://www.jianshu.com/p/1d02c97f3573

 

问题简述:Centos7下修改系统的最大文件打开数的时候,对系统启动的进程不生效
问题详述:Centos7下需修改系统最大文件打开数为100000,进程数为50000,于是做了如下操作

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

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

 
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值

 
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


 
image.png

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


 
image.png

到这里问题就来了,为什么通过systemctl启动的nginx对limit的设置不生效 ?????
然后查看了1号进程的limit值( cat /proc/1/limits ),发现也是对修改/etc/security/limits.conf文件里的最大文件打开数和最大进程数没有生效

6:原因

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


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


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

与[转帖]CentOS 7 systemd service 设置limit,不生效问题相似的内容:

[转帖]CentOS 7 systemd service 设置limit,不生效问题

https://www.jianshu.com/p/1d02c97f3573 问题简述:Centos7下修改系统的最大文件打开数的时候,对系统启动的进程不生效问题详述:Centos7下需修改系统最大文件打开数为100000,进程数为50000,于是做了如下操作 说 明:此问题只出现在centos7下

[转帖]CentOS7上systemctl的使用

https://www.cnblogs.com/yeyuzhuanjia/p/14676182.html CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。 1、原来的 service 命令

[转帖]Linux命令之systemctl命令

一、systemctl命令简介 CentOS 5使用SysV init;CentOS 6使用Upstart,CentOS 7使用Systemd管理守护进程。centos7采用 systemd管理,服务独立的运行在内存中,服务响应速度快,但占用更多内存。独立服务的服务启动脚本都在目录 /usr/lib

[转帖]操作系统性能参数调优

https://www.bookstack.cn/read/TiDB-4.0/tune-operating-system.md 本文档仅用于描述如何优化 CentOS 7 的各个子系统。 注意: CentOS 7 操作系统的默认配置适用于中等负载下运行的大多数服务。调整特定子系统的性能可能会对其他子

[转帖]Centos 7.6 安装部署 openGauss 2.0 企业版 HA

https://www.modb.pro/db/567253?utm_source=index_ori 一、安装环境设置 1.1 硬件环境 名称最低配置建议配置测试配置 服务器数量 2 略 略 硬盘 * 至少1GB用于安装openGauss的应用程序。* 每个主机需大约300MB用于元数据存储。*

[转帖]Centos 7.6 安装部署 openGauss 3.1.0 企业版一主两备集群

https://www.cnblogs.com/dbajacky/p/16904017.html 一、安装环境设置 1.1 硬件环境 名称最低配置建议配置测试配置 服务器数量 3 略 略 硬盘 * 至少1GB用于安装openGauss的应用程序。* 每个主机需大约300MB用于元数据存储。* 预留7

[转帖]Centos 7 部署 openGauss 3.1.0 级联备库集群及集群缩容删除节点-运维指南

https://www.yisu.com/zixun/kf/ 一、安装环境设置 1.1 硬件环境 名称最低配置建议配置测试配置 服务器数量 3 略 略 硬盘 * 至少1GB用于安装openGauss的应用程序。* 每个主机需大约300MB用于元数据存储。* 预留70%以上的磁盘剩余空间用于数据存储。

[转帖]Centos 7.6 安装部署 openGauss 3.1.0 企业版一主两备集群

https://www.cnblogs.com/dbajacky/p/16904017.html 一、安装环境设置 1.1 硬件环境 名称最低配置建议配置测试配置 服务器数量 3 略 略 硬盘 * 至少1GB用于安装openGauss的应用程序。* 每个主机需大约300MB用于元数据存储。* 预留7

[转帖]CentOS 7系统优化脚本

https://zhuanlan.zhihu.com/p/530923408 作为一名运维,经常会部署各种用途的操作系统,但在这些工作中,我们会发现很多工作其实是重复性的劳动,操作的内容也是大同小异,基于这类情况,我们可以把相同的操作做成统一执行的脚本,不同的东西作为变量手动输入。节约下来的时间不就

[转帖]Centos 7 查看磁盘io ,找出占用io读写很高的进程

1,先用iostat查看磁盘io 是否读写负载很高 用iostat -x 1 10 如果 iostat 没有,要 yum install sysstat安装这个包,第一眼看下图红色圈圈的那个如果%util接近100%,表明I/O请求太多,I/O系统已经满负荷,磁盘可能存在瓶颈,一般%util大于70