Mysql show processlist перечисляет много процессов sleep и info = null? - PullRequest
12 голосов
/ 29 октября 2010

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

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

| 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 ]

15 голосов
/ 29 октября 2010

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

3 голосов
/ 03 апреля 2013

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

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

и

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

У меня была похожая ситуация, и я использовал Codeigniter с включенным pconnect.После его выключения ( посмотрите, как ) каждое соединение было закрыто должным образом после использования, и мой список процессов MySQL был пуст.о производительности, но просто пытается объяснить, почему вы можете увидеть много спящих соединений в MySQL.С точки зрения производительности, соединение может оставаться активным.Больше информации на: http://www.mysqlperformanceblog.com/2006/11/12/are-php-persistent-connections-evil/

...