Mysql show processlist перечисляет много процессов сна и info = null?

Я ввожу стресс-тест в свое веб-приложение, которое подключается к серверу mysql, и я отслеживаю список процессов шоу mysql.

когда нагрузка высока (High swap i / o), я получаю много таких процессов:

| 97535 | db| localhost | userA | Sleep   |  515 |         | NULL 
| 97536 | db| localhost | userA | Sleep   |  516 |         | NULL 
| 97786 | db| localhost | userA | Sleep   |  343 |         | NULL 
| 97889 | db| localhost | userA | Sleep   |  310 |         | NULL 

но я не могу понять, почему они все еще там и не убиты? Это в конечном итоге приводит к тому, что мое приложение использует все max_connections и перестает обрабатывать входящие запросы...

любая идея, что это за процессы и что они делают там:) ?

2 ответов


Это бездействующие соединения, удерживаемые клиентом. Вы должны убедиться, что любая клиентская библиотека, которую вы используете (JDBC,...) настроен на то, чтобы не держать неиспользуемые соединения открытыми так долго, или что ваши # клиенты * max # соединений не слишком велики.


Я предполагаю, что вы используете постоянные соединения, например,pconnect в php:

[..] при подключении функция сначала попытается найти (постоянную) ссылку, которая уже открыта с тем же хостом, именем пользователя и паролем. Если он найден, идентификатор для него будет возвращен вместо открытия нового соединения

и

[..] соединение с SQL server не будет закрыто при выполнении сценарий заканчивается. Вместо ссылка останется открытой для дальнейшего использования

У меня была аналогичная ситуация, и я использовал Codeigniter с включенным pconnect. После его выключения (видел, как) каждое соединение было закрыто должным образом после использования, и мой список процессов MySQL был пуст.

производительность: выше не спорит о производительности, а просто пытается объяснить, почему вы можете увидеть много сна подключения в MySQL. Это не может быть отрицательным, в отношении производительности, чтобы соединения оставались активными. Дополнительная информация по адресу: http://www.mysqlperformanceblog.com/2006/11/12/are-php-persistent-connections-evil/