centos 7.x設置守護進程的文件數量限制

在Bash中有個ulimit命令,提供了對Shell及該Shell啓動的進程的可用資源控制。主要包括打開文件描述符數量、用戶的最大進程數量、coredump文件的大小等。nginx

在CentOS 5/6等版本中,資源限制的配置能夠在/etc/security/limits.conf設置,針對root/user等各個用戶或者*表明全部用戶來設置。
固然,/etc/security/limits.d/
中能夠配置,系統是先加載limits.conf而後按照英文字母順序加載limits.d目錄下的配置文件,後加載配置覆蓋以前的配置。 一個配置示例以下:ide

  • 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來配置便可。spa

對於systemd service的資源限制,如何配置呢?rest

全局的配置,放在文件/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爲例。it

編輯/usr/lib/systemd/system/nginx.service文件,或者/usr/lib/systemd/system/nginx.service.d/my-limit.conf文件,作以下配置:io

[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

相關文章
相關標籤/搜索