高トラフィックに対応するWEBサーバのネットワーク設定

TCPコネクションの状態が通信終了間際の状態であるTIME_WAITでいっぱいになり、ネットワーク資源がなくなる状態への対応をする。

net.ipv4.tcp_tw_reuseは安全にTIME_WAIT状態のソケットを新しい接続に対して再利用してくれる。
同様にTIME_WAIT状態のソケットの再利用をしてくれるnet.ipv4.tcp_tw_recycleは危険なので、有効にしてはいけない。net.ipv4.tcp_tw_recycleを有効にすると、同じグローバルIPのクライアントからの接続かつTCPパケットにタイムスタンプ情報が入っている場合、ほぼ同時にパケットを送ると、古いタイムスタンプの方のパケットを勝手にドロップし、ドロップされた方のクライアントはタイムアウトになってしまう。
net.ipv4.tcp_fin_timeoutは、自分からCLOSEする場合に、TIME_WAIT状態になっている秒数を定義する。規定値は60秒。

参考
http://qiita.com/kuni-nakaji/items/c07004c7d9e5bb683bc2
http://d.hatena.ne.jp/pullphone/20120511/1336722675

-Linux