centos 7 x設定守護程序的檔案數量限制

2021-07-13 23:16:34 字數 3397 閱讀 3362

在bash中有個ulimit命令,提供了對shell及該shell啟動的程序的可用資源控制。主要包括開啟檔案描述符數量、使用者的最大程序數量、coredump檔案的大小等。

在centos 5/6等版本中,資源限制的配置可以在/etc/security/limits.conf設定,針對root/user等各個使用者或者*代表所有使用者來設定。 當然,/etc/security/limits.d/中可以配置,系統是先載入limits.conf然後按照英文本母順序載入limits.d目錄下的配置檔案,後載入配置覆蓋之前的配置。 乙個配置示例如下:

*     soft   nofile    100000

*     hard   nofile    100000

*     soft   nproc     100000

*     hard   nproc     100000

*     soft   core      100000

*     hard   core      100000

不過,在centos 7/rhel 7的系統中,使用systemd替代了之前的sysv,因此/etc/security/limits.conf檔案的配置作用域縮小了一些。limits.conf這裡的配置,只適用於通過pam認證登入使用者的資源限制,它對systemd的service的資源限制不生效。登入使用者的限制,與上面講的一樣,通過/etc/security/limits.conf和 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使用者例項使用的。一般的sevice,使用system.conf中的配置即可。systemd.conf.d/*.conf中配置會覆蓋system.conf。

defaultlimitcore=infinity

defaultlimitnofile=100000

defaultlimitnproc=100000

注意:修改了system.conf後,需要重啟系統才會生效。

針對單個service,也可以設定,以nginx為例。

編輯/usr/lib/systemd/system/nginx.service檔案,或者/usr/lib/systemd/system/nginx.service.d/my-limit.conf檔案,做如下配置:

[service]

limitcore=infinity

limitnofile=100000

limitnproc=100000

然後執行如下命令,才能生效。

sudo systemctl daemon-reload

sudo systemctl restart nginx.service

檢視乙個程序的limit設定:cat /proc/your-pid/limits

例如我的乙個nginx service的配置效果:

$ cat /proc/$(cat /var/run/nginx.pid)/limits

limit                     soft limit           hard limit           units

max cpu time              unlimited            unlimited            seconds

max file size             unlimited            unlimited            bytes

max data size             unlimited            unlimited            bytes

max stack size            8388608              unlimited            bytes

max core file size        unlimited            unlimited            bytes

max resident set          unlimited            unlimited            bytes

max processes             100000               100000               processes

max open files            100000               100000               files

max locked memory         65536                65536                bytes

max address space         unlimited            unlimited            bytes

max file locks            unlimited            unlimited            locks

max pending signals       1030606              1030606              signals

max msgqueue size         819200               819200               bytes

max nice priority         0                    0

max realtime priority     0                    0

max realtime timeout      unlimited            unlimited            us

順便提一下,centos7自帶的/etc/security/limits.d/20-nproc.conf,裡面預設設定了非root使用者的最大程序數為4096,被limit.d目錄中的配置覆蓋了。

參考文件:

man systemd

man systemd-system.conf

CentOS 7 X 安全手記

一 安裝雲鎖 1 報錯 2 關閉selinux vim etc selinux config 將 selinux enforcing 改 selinux disabled 3 重啟系統 reboot now 二 centos7相關的操作 1 防火牆 firewall cmd 1 禁止被ping 禁止...

CentOS7 X磁碟掛載

假設掛載點為 www 假設磁碟為 dev vdc 假設磁碟只有卷 dev vdc1 該方案可能會丟失磁碟所有資料,操作前請先備份 磁碟已格式化 用過的磁碟 磁碟立即掛載 mkdir www mount dev vdc1 www 啟用開機掛載 獲取磁碟id ll dev disk by path lr...

CentOS7 X磁碟擴容

假設掛載點為 www 假設磁碟為 dev vdc 假設磁碟只有卷 dev vdc1 該方案可能會丟失磁碟所有資料,操作前請先備份 檢視磁碟是否已分割槽,以及分割槽方式為 mbr 還是 gpt 如果包含 device 資訊,表示已分割槽 分割槽表型別dos表示分割槽方式為 mbr 分割槽表型別gpt表...