ulimit の変更


/etc/security/limits.conf による設定変更

以下は全ユーザの nofile (max number of open files) の変更例。

/etc/security/limits.conf
*    soft nofile 10000
*    hard nofile 20000
$ ulimit -n -S
10000
$ ulimit -n -H
20000

サービスの設定変更

/etc/security/limits.conf の変更は、サービスには反映されないため、個々のサービス毎に行う必要がある。
以下は httpd での設定変更例。

RHEL6 の場合

$ echo "ulimit -SHn 8192   # nofile" >>/etc/sysconfig/httpd
$ service httpd restart

RHEL7 の場合

$ mkdir /etc/systemd/system/httpd.service.d
$ echo [Service] >/etc/systemd/system/httpd.service.d/ulimit.conf
$ echo LimitNOFILE=8000 >>/etc/systemd/system/httpd.service.d/ulimit.conf
$ systemctl restart httpd

以下の通り設定反映済み。

$ cat /proc/$(</var/run/httpd/httpd.pid)/limits| grep "Max open files"
Max open files            8000                 8000                 files

参考情報

How to set ulimit values
https://access.redhat.com/solutions/61334

What is the actual meaning of "Soft limit" and "Hard limit" in limits.conf file ?
https://access.redhat.com/solutions/648113

How to increase max file descriptor (nofile ulimit) for Apache httpd on RHEL 6
https://access.redhat.com/solutions/130573

How to set limits (ulimit) for services in RHEL6 and older with upstart, sysvinit
https://access.redhat.com/solutions/253043

How to set limits (ulimit) for services run by systemd
https://access.redhat.com/solutions/1346533