centos7のnginxがToo many open filesで止まる時の対処方法

Pocket

ちょっと同時接続試験をしていたら、centos7のnginxが

Too many open files

ってエラーで詰まっていた。

たぶん、1024コネクションくらいでお腹いっぱいになっている。よくあるファイルディスクリプタの制限っぽい。

んで、CentOS7環境(特にsystemctl,systemd)での対処方法

まずは、現状の確認

nginxのerror.logがこんなのを出力する

んで、nginxのlimitsを確認する。

Max open filesが見事に1024になっている。

とりあえずの対処方法

こいつは突貫対処なので、正しい対処はもっと下にあります。

/etc/systemd/system/multi-user.target.wants/nginx.service

このファイルの

[Service]

のところに

LimitNOFILE=50000

を追加する。

で、再起動。

daemon-reloadしないと反映されないので要注意

対処後の確認

はい。50000になってます。

作法の良い対処方法

上の対応だと、rpmで設置される設定ファイルを直接書き換えているので

アップデートとかで消える可能性がある。(だったら書くな)

設定上書き用のディレクトリを作る。

そこに上書き用の設定ファイルを置く。

後は上の例と同じで再起動する。

これでアップデートも安心。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)