永久に見えるものに対して、CLOSE_WAIT状態のTCP接続を蓄積するSLESマシンを持っています。これらの記述子は、最終的に利用可能なすべてのメモリを使い果たします。現時点では3037個ありますが、最近急いで再起動するまではずっと高くなりました。
おもしろいのは、それらがリッスンプロセスがあると予想されるローカルポートへの接続からではないことです。関連付けられたPIDがなく、タイマーが期限切れになっているようです。
# netstat -ton | grep CLOSE_WAIT
tcp 176 0 10.0.0.60:54882 10.0.0.12:31663 CLOSE_WAIT off (0.00/0/0)
tcp 54 0 10.0.0.60:60957 10.0.0.12:4503 CLOSE_WAIT off (0.00/0/0)
tcp 89 0 10.0.0.60:50959 10.0.0.12:3518 CLOSE_WAIT off (0.00/0/0)
# netstat -tonp | grep CLOSE_WAIT
tcp 89 0 10.0.0.59:45598 10.0.0.12:1998 CLOSE_WAIT -
tcp 15 0 10.0.0.59:60861 10.0.0.12:1938 CLOSE_WAIT -
tcp 5 0 10.0.0.59:56173 10.0.0.12:1700 CLOSE_WAIT -
TCPスタックやカーネルネットワーキングに関しては私はブラックベルトではありませんが、マニュアルページによると、これらの値はデフォルトであるため、TCP構成は正気のようです。
# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
それで何が得られますか?タイマーが期限切れになった場合、スタックはこのようなものを自動的にクリアすべきではありませんか?これらの事柄が蓄積するにつれて、私は効果的に長期的なDoSを自分に与えています。
sudo netstat -tonp
これが発生しているプログラムを確認してください。