間違った情報ばかりひっかかるので、訂正用にメモしておく。
忙しいサーバーだとTIME_WAITのコネクションが残りまくって、ポートを使い切ってしまうことがある。
そこでググってみると net.ipv4.tcp_fin_timeout を小さくするというブログがたくさんひっかかるのだけども、これはFIN_WAIT_2からTIME_WAITになるまでの待ち時間の設定なので、TIME_WAITは減りません。
TIME_WAITになってからの待ち時間はソースにハードコードされており、設定では変えることはできません。
変え方は こちら に詳しくのってます。
TIME_WAITになったコネクションを使いまわすようにカーネルパラメーターを設定することでTIME_WAITを減らせます。
※接続元、接続先の両方で下記の設定をする必要あり。
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_tw_recycleは意味ないし、問題もあるので1にしてはいけない。
それ以外だと、無理やり終了パケットを送って終了させるしかない。※これはまだできるか未確認。
このスライドに詳しいことが書いてあります。
間違った情報に振り回される人が減りますように。