TIME_WAITがたくさん

先月、いや先々月くらいからずっと追っかけてる件。ようやく原因らしきものがわかったっぽい。
Apache->Squid->Apache->Apacheと多段プロクシになっているウェブサーバで、二段目のSquidが"TCP_MISS_ABORTED:FIRSTUP_PARENT"を返してくるってことだったんですが、どうにも原因がわかりませんでした。

バックエンドにはリクエストがいっていないので、コネクションを作成することに失敗しているみたい。ってことでnetstatで調査。

# netstat -anp 

そうすると、TCP_WAIT状態のものが1万以上。こりゃ異常だってことで対処。
/etc/sysctl.confにこんな記述をいれます。

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10

でもってsysctlでカーネルに反映。

# sysctl -p

効果はこんな。