CentOS7-ulimit
簡介
CentOS-7之前,改變系統的ulimit值,一般有2種方式:
ulimit -SHu 65535
寫入/etc/profile
或者/etc/bashrc
/etc/security/limits.conf
修改此文件
但是centos-7 新增了/etc/security/limits.d/20-nproc.conf
文件[1],並且該文件會覆蓋/etc/security/limits.conf
的配置參數,也就是說你如果在limits.conf
里配置的內容就不生效了,反而還會被覆蓋為:
* soft nproc 4096
root soft nproc unlimited
而此時未經任何優化的centos-7的ulimit值為:
普通用戶:
open files (-n) 1024
max user processes (-u) 4096
root:
open files (-n) 1024
max user processes (-u) 15659
修改普通用戶和root的nofile和nproc值
修改20-nproc.conf
cat > /etc/security/limits.d/20-nproc.conf <<'EOF'
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
#nproc
* soft nproc 65535
root soft nproc unlimited
* hard nproc 65535
root hard nproc unlimited
#nofile
* soft nofile 65535
* hard nofile 65535
EOF
centos-7額外修改
在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。
# 修改systemd系統級ulimit
cat >> /etc/systemd/system.conf <<'EOF'
DefaultLimitCORE=infinity
DefaultLimitNOFILE=100000
DefaultLimitNPROC=100000
EOF
# 修改systemd用戶級ulimit
cat >> /etc/systemd/user.conf <<'EOF'
DefaultLimitCORE=infinity
DefaultLimitNOFILE=100000
DefaultLimitNPROC=100000
EOF
systemctl daemon-reload
查看ulimit
ulimit -a|egrep 'open files|max user processes'