Ответы:
Даже самым могущественным из нас иногда нужно спать. Без сна человек начинает беспокоиться, и бессонница может привести к всевозможным серьезным симптомам.
Более серьезно: состояние сна означает, что процесс MySQL завершил свой запрос, но клиентская сторона еще не завершила работу. Многие веб-приложения впоследствии не очищают свои соединения, что приводит к спящим процессам MySQL. Не беспокойтесь, если их всего несколько; MySQL очистит их после настраиваемого периода ожидания (wait_timeout).
Или, если ваше веб-приложение использует постоянные соединения и пул соединений, то вполне нормально иметь даже множество спящих процессов: в этом случае ваше приложение просто открывает, например, 100 соединений SQL и сохраняет их открытыми. Это уменьшает затраты на открытие / закрытие соединения. Если ваше приложение не очень загружено, это нормально, что не каждому SQL-процессу нужно что-то делать, поэтому они спят.
Нет, не беспокойся о них, если у тебя их тысячи. Обычно они указывают на соединение с базой данных, которое в настоящее время ничего не делает, но в остальном все еще живо.
Многие веб-сайты построены таким образом, что в начале обработки страницы открывается соединение с базой данных, затем оно используется на протяжении всего поколения страницы и, наконец, в конце отбрасывается. Если удаление выполнено правильно, соединение с базой данных закрывается, и сервер затем уничтожает соответствующий поток, что означает, что это соединение исчезает из списка процессов.
Если соединение не закрыто, оно может оставаться в состоянии «SLEEP» до истечения времени ожидания. В этом случае у вас может возникнуть множество процессов сна. но если вы не столкнетесь с проблемами памяти на сервере БД, это тоже не будет большой проблемой.
Прежде чем увеличивать переменную max_connections, вы должны проверить, сколько у вас неинтерактивных соединений, запустив команду show processlist.
Если у вас много спящих соединений, вам нужно уменьшить значение переменной «wait_timeout», чтобы закрыть неинтерактивное соединение после ожидания несколько раз.
ПОКАЗАТЬ СЕССИИ ПЕРЕМЕННЫЕ, КАК 'wait_timeout'; + --------------- + ------- + | Переменное_имя | Значение | + --------------- + ------- + | wait_timeout | 28800 | + --------------- + ------- +
значение в секундах, это означает, что неинтерактивное соединение еще до 8 часов.
SET session wait_timeout = 600; Запрос в порядке, затронуто 0 строк (0,00 с)
Через 10 минут, если спящее соединение все еще спит, mysql или MariaDB прерывают это соединение.