红帽linux7.2命令,修改RedHat 7.2 进程最大句柄数限制

RedHat对进程打开文件句柄数主要通过设置全局值和登陆用户分别管理。其中/proc/sys/fs下设置全局最大文件句柄数和用户进程能打开的最大文件句柄数,这两个参数一般情况下不需要修改。

对于普通用户或者进程通过/etc/security/limits.conf和/etc/security/limits.d/*.conf进行管理。或者通过ulimit 命令进行设置,但通过ulimit设置只对当前shell启动的进程有效。两者的设置生效范围和设置时机不同,详见三 操作系统limits.conf生效机制。

Redhat 7 以后对Systemd启动的服务的最大句柄数通过/etc/systemd/system.conf和/etc/systemd/user.conf进行管理。

一、操作系统全局设置

1.查看系统的初始设置,默认为1024*1024=1048576

28127d3e7ae99542cc1fd5b41a98221c.png

2.查看/etc/sysctl.conf和/etc/sysctl.con./*.conf的设置,如果需要修改sysctl.conf,则修改后须执行sysctl –p使修改生效。

00869e64a8ad97d7ef062e2025c10a28.png

3.查看/etc/security/limits.conf 以及/etc/security/limits.d/*.conf 。操作系统默认先加载limits.conf后加载limits.d/*.conf,所以相同配置后面会覆盖前面。

4904d2b5cd137778513a5c2a30bd74de.png

以上参数设置的关系

a)         所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max

b)         单个进程打开的文件描述符数不能超过user limit中nofile的soft limit

c)         nofile的soft limit不能超过其hard limit

d)         nofile的hard limit不能超过/proc/sys/fs/nr_open

注:soft limit表示对当前用户生效的值,用户可以通过命令或者脚本进行修改,但是不能超过hard limit。而hard limit 只用root才能修改,且不能超过nr_open数。

二、对Systemd启动程序的设置

Red Hat 7使用Systemd代替了SysV,因此systemd启动的服务使用配置文件/etc/systemd/system.conf和/etc/systemd/user.conf进行管理,不受limits.conf限制。如果存在/etc/system/system.conf.d/*.conf 则同样会覆盖system.conf相同配置项。修改该配置文件后重启系统后生效。主要使用以下两个选项进行限制:

DefaultLimitNOFILE #限制systemd启动进程打开文件数

DefaultLimitNPROC #限制systemd创建进程数

系统限制

216230cffddeeb96e5e81a8b23ff7479.png

普通用户

9ee434e7f1811fb7f414b54239b9dc65.png

systemctl启动的单个服务如何修改打开句柄数:

1.通过命令查看服务对应的配置文件:

systemctl status example.service

510c32e6598996bb32d980dd8b9ea537.png

2.编辑对应的配置文件,添加如下内容:

vim /usr/lib/systemd/system/example.service

ae8347103be2779bc18b347978c2d603.png

3.通过以下命令使配置生效

sudo systemctl deamon-reload

三、操作系统limis.conf生效机制

ulimit –a显示如下,其中-n后面的为进程可以打开的最大文件句柄数。其他值为系统默认值。通过ulimit  -n设置的值只限制当前shell启动进程可以打开的文件句柄数。

81b6aa4dfa2f751d7b5ebcf8a06c4219.png

Linux对用户使用资源的限制通过PAM对登陆用户进行身份验证并设置相应的限制。

具体顺序如下。从用户登陆开始,操作系统会依次执行如下三部

1. /etc/pam.d/login

2. /etc/pam.d/system-auth

3. /lib64/security/pam_limits.so

具体内容如下:

1.在/etc/pam.d/login 中调用system-auth

9ef1e1eadefd2f25ab98b2f984bc901c.png

2. 在/etc/pam.d/system-auth 调用pam_limits.so

a373d7b61403d5ded5a049affa400b31.png

3. 通过grep查看/lib64/security/pam_limits.so 可以看到limits.conf和limits.d/*.conf

2f3d098743c46f56a6e039a1d382882f.png

4.在rc.local中设置ulimit -n 6635是否可以呢?

先说答案,可能不行。主要是操作系统加载顺序导致的,操作系统在启动时加载rc.local,然后在用户登陆时执行 limits.conf,最后在设置用户环境变量时执行/etc/profile 。因此后面的limits.conf和/etc/profile 中的 ulimit 命令设置均可能覆盖以前的设置。

四结论

每次用户登录时会先加载/etc/security/limits.conf 以及/etc/security/limits.d/*.conf的配置,再执行/etc/profile 中的设置,因此在更改进程打开最大文件句柄数限制时有两种方案:

1.按格式修改/etc/security/limits.conf,重新登陆使limits.conf生效,然后再启动服务程序;

2.在/etc/profile 添加ulimit –n 65535 设置,重新登陆或者执行source /etc/profile命令,然后启动服务程序;

针对设置了免密登陆的情况,由于没有了了用户登陆验证过程,所以不会加载limits.conf文件,因此建议通过/etc/profile 中添加ulimit –n 65535命令设置,然后在启动服务程序之前执行source命令使该设置生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值