У меня есть сервер приложений (причал 6 в ящике Linux), в котором размещается 15 индивидуальных приложений (индивидуальная война). Каждые 3 или 4 дня я получаю предупреждение от nagios относительно количества открытых TCP-соединений. После проверки я вижу, что подавляющее большинство этих соединений связано с сервером MySQL.Отслеживание утечек связи MySQL
netstat -ntu | grep TIME_WAIT
Показывает 10.000+ соединения на сервере MySQL с сервера приложений (обратите внимание на состояние TIME_WAIT). Если я перезапущу причал, соединения упадут почти до нуля.
Некоторые интересные значения из шоу статуса:
mysql> show status;
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| Aborted_clients | 244 |
| Aborted_connects | 695853860 |
| Connections | 697203154 |
| Max_used_connections | 77 |
+--------------------------+-----------+
А «шоу PROCESSLIST» не показывает ничего необычного (что я бы ожидать, поскольку большинство соединений простаивают - помните, TIME_WAIT сверху).
У меня есть TEST env для этого сервера, но у него никогда не возникло проблем. Очевидно, что он не получает большого трафика, а сервер приложений постоянно перезапускается, поэтому отладка не очень помогает. Думаю, я мог бы вникнуть в каждое отдельное приложение и написать нагрузочный тест, который попадет в код базы данных, но для этого потребуется много времени/хлопот.
Любые идеи, как я мог отследить приложение, которое захватывает все эти соединения и никогда не отпускает?
Я не уверен, что перезагрузка фактически перезагружает настройки без полного перезапуска. Проверьте его поведение и документацию. – MarkR
Хорошая точка - http://serverfault.com/questions/79043/reload-my-cnf-without-restarting-mysql-service – jckdnk111