У меня запущена установка LAMP, и у меня, кажется, много соединений CLOSE_WAIT для программы apache2, когда я использую netstat (несколько сотен). Это в конечном итоге приводит к тому, что мой apache перестает отвечать.
Ниже представлена установка:
php:
PHP 5.3.10-1ubuntu3.6 with Suhosin-Patch (cli) (built: Mar 11 2013 14:31:48)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
apache2:
Server version: Apache/2.2.22 (Ubuntu) [running mpm-prefork]
mysql
Server version: 5.5.29-0ubuntu0.12.04.2-log (Ubuntu)
Бег Ubuntu 12.04 LTS
Linux numerink201 3.2.0-34-virtual #53-Ubuntu SMP Thu Nov 15 11:08:40 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
У меня есть пара вопросов:
Как я могу узнать, на каком этапе процесса я нахожусь? Очевидно, что клиент отправил запрос FIN / RST, но как я могу узнать, какой, и если FIN, как мне узнать, отправил ли процесс свой собственный FIN / ACK или я жду клиентского ACK. Или если все было получено, но процесс не завершился?
Если Apache не может должным образом закрыть процесс, как я могу найти проблему?
В настоящее время я уменьшил TimeOut для apache с 300 до 150 в качестве временной меры. Есть ли лучший способ сделать это?
Заранее спасибо.
Было бы полезно, если бы вы указали версию своего ядра и сообщили нам, какой MPM вы используете. Если это рабочий (потоковый) сервер, переключитесь на предварительную вилку (не потому, что Расмус сказал, что это была плохая идея в 2005 году - в Apache тоже есть проблемы).
много подключений CLOSE_WAIT
Для который сервер? httpd? MySQL? Что-то другое?
Очевидно клиент отправил запрос FIN
В прошлый раз, когда я рассмотрел это более подробно, и MSIE, и Firefox обычно закрывают соединения с помощью RST, а не «чистым» завершением работы.
Вы, по-видимому, не заботитесь о производительности, поэтому отключение сообщений поддержки активности может помочь в качестве временной отсрочки.