Слишком много TIME_WAIT соединений - PullRequest
1 голос
/ 02 мая 2009

У нас довольно загруженный веб-сайт (1 миллион просмотров страниц в день), использующий мод-прокси Apache, который постоянно перегружен соединениями (> 1000) в состоянии TIME_WAIT. Соединения к порту 3306 (mysql), но mysql показывает только несколько соединений (показать список процессов) и работает нормально. Мы пытались изменить кучу вещей (сохранить вкл / выкл), но, похоже, ничего не помогло. Все остальные системные ресурсы находятся в разумных пределах.

Я искал вокруг, что, кажется, указывает на изменение tcp_time_wait_interval. Но это кажется немного решительным. Я раньше работал на загруженном веб-сайте, но у меня никогда не было этой проблемы.

Есть предложения?

Ответы [ 3 ]

5 голосов
/ 02 мая 2009

Каждое соединение time_wait - это соединение, которое было закрыто.

Возможно, вы подключаетесь к mysql, отправляете запрос, а затем отключаетесь. Повторите для каждого запроса на странице. Подумайте об использовании инструмента пула соединений или, по крайней мере, глобальной переменной, которая поддерживает ваше соединение с базой данных. Если вы используете глобальный, вам придется закрыть соединение в конце страницы. Надеюсь, у вас есть что-то общее, что вы можете выразить, например, нижний колонтитул.

В качестве бонуса вы должны получить более быструю загрузку страницы. MySQL быстро подключается, но не нужно подключаться еще быстрее.

1 голос
/ 24 сентября 2010

Если ваши клиентские приложения используют JDBC, возможно, вы столкнулись с этой ошибкой: http://bugs.mysql.com/bug.php?id=56979 Я считаю что у php такая же проблема Ура, Жиль.

0 голосов
/ 02 мая 2009

У нас была похожая проблема, когда все наши веб-серверы зависали, потому что наш php устанавливал соединения с сервером mysql, который был настроен для обратного поиска хоста при входящих соединениях.

Когда дела шли медленно, все работало нормально, но под нагрузкой время отклика вылетело через крышу, и все серверы apache зависли в time_wait.

Мы решили проблему с помощью xdebug для создания данных профилирования в сценариях с высокой нагрузкой и с их помощью. вызовы mysql_connect занимают 80-90% времени выполнения.

...