日に10万、100万と言うようなアクセス数のあるサイトだと、デフォルトの設定では運用が難しくなる場合がある。単純にサーバ台数を増やすということも可能だが、コストもかかるし、当然障害が増える箇所も増えるなど良いことばかりではない。そんなときにkernelのチューニング一つで、サーバを増やさなくても良いこともある。それ以外にも、OSの挙動だったり、アプリの挙動だったりを制御することも出来るので、知っていて損はないはず。ここではCentOSでのkernelのチューニングの方法をメモ。言ってもすべてを理解するのは難しいので、自分が直面したところをピックアップ。以下のチューニングはsysctlコマンドでも可能なので、そちらも必要であれば参照されたし。†backlogとは、一度に受け入れられるTCPセッションの数。OSは一度に受け入れられるTCPのセッション数が予め決められている。(デフォルトは1024)この値を超えたものに関してはOSはSYNパケットを拒否することになる。溢れたパケット(overflow)についてはnetstatで確認できる。1024ただし、この値はnet.core.somaxconnより大きかった場合、net.core.somaxconnの値を優先する。一度に受け入れられるTCPセッションのキューの数。TCPのセッション数をbacklogで管理し、それを超えたものはキューに格納される。このキューの数をここで設定する。デフォルトは128になっている。net.core.somaxconnということになる。backlogの受け口を広げても一度に受け入れられるTCPセッションは128までとなってしまう。†exec-shieldはデフォルト"1"で設定されている。アプリの実行の制御、という感じかのかな?どの値が正しい、と言うのは当然ないのだが、アプリの要件次第で変更することがあったのでメモ。kernel.exec-shield上記で現在の値が確認出来る。