Linux下ulimit關于open files的配置過程
ulimit關于open files的配置
操作系統(tǒng)默認只能打開1024個文件,打開的文件超過這個數(shù)發(fā)現(xiàn)程序會有“too many open files”的錯誤,1024對于大數(shù)據系統(tǒng)來說顯然是不夠的,如果不設置,基本上整個大數(shù)據系統(tǒng)是“不可用的”,根本不能用于生產環(huán)境。
在centos 5/6 等版本中,資源限制的配置可以在 /etc/security/limits.conf 設置,針對root/user等各個用戶或者*代表所有用戶來設置。
當然,/etc/security/limits.d/ 中可以配置,系統(tǒng)是先加載limits.conf然后按照英文字母順序加載limits.d目錄下的配置文件,后加載配置覆蓋之前的配置。
一個配置示例
如下:
* soft nofile 65535 * hard nofile 65536 * soft nproc 65535 * hard nproc 65535 * soft core 65535 * hard core 65535
配置方法
如下:
echo "* soft nofile 65535" >> /etc/security/limits.conf echo "* hard nofile 65535" >> /etc/security/limits.conf echo "* soft nproc 65535" >> /etc/security/limits.conf echo "* hard nproc 65535" >> /etc/security/limits.conf
在bash中,有個ulimit命令,提供了對shell及該shell啟動的進程的可用資源控制。主要包括打開文件描述符數(shù)量、用戶的最大進程數(shù)量、coredump文件的大小等。
在CentOS 7 / RHEL 7的系統(tǒng)中,使用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 是系統(tǒng)實例使用的,user.conf用戶實例使用的。一般的sevice,使用system.conf中的配置即可。
systemd.conf.d/*.conf中配置會覆蓋system.conf。
配置參數(shù)如下:
DefaultLimitCORE=infinity DefaultLimitNOFILE=65535 DefaultLimitNPROC=65535
注意:
- 修改了system.conf后
- 需要重啟系統(tǒng)才會生效
針對單個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
然后運行如下命令,才能生效。
systemctl daemon-reload systemctl restart nginx.service
查看一個進程的limit設置:
cat /proc/YOUR-PID/limits
例如我的一個nginx service的配置效果:
cat /proc/$(cat /var/run/nginx.pid)/limits
順便提一下:
CentOS7自帶的/etc/security/limits.d/20-nproc.conf,里面默認設置了非root用戶的最大進程數(shù)為4096,limit.conf的配置會被limit.d目錄中的配置覆蓋,這點需要注意,針對普通用戶,需要修改20-nproc.conf。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
ubuntu環(huán)境下安裝memcache及啟動的方法
這篇文章主要介紹了ubuntu環(huán)境下安裝memcache及啟動的方法,結合實例形式簡單分析了ubuntu環(huán)境下memcache的安裝、啟動及簡單測試方法,需要的朋友可以參考下2018-03-03ubuntu系統(tǒng)中/etc/rc.local和/etc/init.d/rc.local的區(qū)別詳解
這篇文章主要給大家介紹了關于在ubuntu系統(tǒng)下/etc/rc.local和/etc/init.d/rc.local區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對需要的朋友們具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-08-08