У мене є машина SLES, яка накопичує TCP-з'єднання в стані CLOSE_WAIT для того, що, здається, назавжди. Ці дескриптори врешті висмоктують усю наявну пам'ять. На даний момент у мене є 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 здається здоровою, оскільки ці значення за замовчуванням на сторінці man:
# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
То що дає? Якщо терміни закінчилися, чи не повинен стек автоматично очищати цей матеріал? Я ефективно даю собі довгостроковий ДО, оскільки ці речі накопичуються.
sudo netstat -tonp
побачити, з якою програмою це відбувається.