MakitSystem

Nginxの性能調整

Too many open files エラー

Nginx -> express(NodeJS)というようにWebサーバーを構築し、負荷テストを行った際に、

Nginxが先に「Too many open files」のエラーで接続を切断するという事態が起こった。

負荷がかかりすぎると「Too many open files」エラーが発生する。その時は、

$ cat /proc/sys/fs/file-max
167488

というようにシステム全体のファイルディスクリプタの上限数を確認し、

workerprocesses、workerrlimitnofile、workerconnectionsをちょうどいいように調節する。

  • worker_processesはCPUの数と同じか、autoを指定する
  • workerrlimitnofileはファイルディスクリプタの上限に達しないようにする。worker_connectionsの3~4倍にする
  • workerconnectionsは 「同時クライアント数はworkerprocess * workerconnection」となるので、workerrlimitnofileを超えないようにworkerprocessesを考えて設定する

nginx.conf
worker_processes  auto;
worker_rlimit_nofile  20480;
events {
    worker_connections 5120
}