CENTOS設定SYSTEMD SERVICE的ULIMIT資源限制

來源:互聯網
上載者:User


在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,難怪我上次在limits.conf中設定了沒啥效果,原來被limit.d目錄中的配置覆蓋了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.