カーネルチューニングで負荷制御

nginx環境での高負荷のサーバーを軽減させることが出来たパラメータについていくつか調べましたので紹介します。

/etc/nginx/nginx.conf

accept_mutex_delay (time);

mutexという排他制御のシステムにより、プロセスがどこもいっぱいだった時の待機状態の時間を調節します。デフォルトは500msです。

net.ipv4.tcp_max_syn_backlog = 10240

TCP通信において、最初にSYNを送信し、SYN/ACKを返してくる待機状態になるクライアントの最大数を調節します。

net.core.somaxconn = 10240

こちらはTCP通信を同時進行するキュー数の最大数の指定です。 net.ipv4.tcp_max_syn_backlogとの優先順位を確認した所、この値はnet.core.somaxconnより大きかった場合、net.core.somaxconnの値を優先するようです。

これら2つは、/etc/sysctf.confに設置すれば恒常的に機能しますが。/proc以下に置くとrestartで消えます。

参考:

カーネルパラメータの一覧など nginx – カーネルパラメーターのチューニング – Qiita

http://qiita.com/sion_cojp/items/c02b5b5586b48eaaa469

Linuxカーネルパラメータの設定とチューニング、デフォルト値の調べ方 – oneのはてなダイアリー

http://eno0514.hatenadiary.jp/entry/20150622/1434905054