NginxやApache等のプロセスはファイルとして扱われます。
よって、アクセス数が増える事でデフォルトのファイル操作上限(1024)に達した場合、「Too many open files」のエラーが出力されます。
ファイルの操作上限をデフォルトから増やす方法についてまとめます。
1. 現状のファイル上限数を確認する
ファイルの上限数確認コマンド。
ulimit -n
出力結果
1024
上記はファイル上限数を変更していない場合のデフォルト値です。
2. ulimit設定変更
vi /etc/security/limits.conf
下記を追記します。
* soft nofile 65536
* hard nofile 65536
3. nginxの設定変更
mkdir /etc/systemd/system/nginx.service.d
vi /etc/systemd/system/nginx.service.d/limit.conf
/etc/systemd/system/nginx.service.d/limit.confに以下を記述します。
[Service]
LimitNOFILE=65536
4. サーバーを再起動してファイル上限数を確認
・Linuxサーバーのファイル上限数確認
ulimit -n
出力結果
65536
・Nginxのファイル操作上限を確認
cat /proc/`pgrep nginx | head -1 `/limits | grep 'open files'
出力結果
Max open files 65536 65536 files