Відповіді:
Навіть наймогутнішим з нас іноді потрібно спати. Без сну можна занепокоїти, і безсоння може призвести до різного роду серйозних симптомів.
Більш серйозно: стан сну означає, що процес MySQL виконав із своїм запитом, але сторона клієнта ще не вийшла. Багато веб-додатків не очищають своїх зв’язків згодом, що призводить до сплячих процесів MySQL. Не хвилюйтеся, якщо їх є лише кілька; MySQL очистить їх після настроюваного періоду очікування (wait_timeout).
Або якщо ваш веб-додаток використовує стійкі з'єднання та об'єднання з'єднань, то цілком нормально мати навіть багато сплячих процесів: у такому випадку ваша програма просто відкриває, наприклад, 100 підключень SQL і тримає їх відкритими. Це зменшує розмикання / закриття підключення. Якщо ваша програма не дуже зайнята, нормально, що майже не кожен процес SQL має щось робити, тому вони сплять.
Ні, не хвилюйтеся за них, якщо у вас їх не тисячі. Зазвичай вони вказують на підключення до бази даних, яке наразі нічого не робить, але в іншому випадку все ще живе.
Багато веб-сайтів побудовані так, що на початку обробки сторінки відкривається підключення до бази даних, потім використовується протягом усього покоління сторінки та остаточно відкидається в кінці. Якщо відкидання виконано належним чином, з'єднання з базою даних закривається, і сервер потім перерве відповідний потік, що означає, що це з'єднання зникає зі списку процесів.
Якщо з'єднання не закрито, воно може залишатися в стані "SLEEP" до тих пір, поки його час не закінчиться. У такому випадку у вас може виникнути безліч сплячих процесів. але якщо ви не стикаєтеся з проблемами пам'яті на db-сервері, це теж не є великою проблемою.
Перш ніж збільшувати змінну max_connections, ви повинні перевірити, скільки у вас неінтерактивних з'єднань, запустивши команду show list list.
Якщо у вас багато підключення до сну, вам доведеться зменшити значення змінної "wait_timeout", щоб закрити неінтерактивне з'єднання після деякого очікування.
ПОКАЖИТИ ЗМІНУВАННЯ СЕСІЇ, ПОДОБАЮТЬ 'wait_timeout'; + --------------- + ------- + | Ім'я змінної | Значення | + --------------- + ------- + | wait_timeout | 28800 | + --------------- + ------- +
значення в секунду, це означає, що неінтерактивне з'єднання все ще триває до 8 годин.
SET сеанс wait_timeout = 600; Запит OK, 0 рядків задіяно (0,00 сек)
Через 10 хвилин, якщо сплячий режим все ще спить, mysql або MariaDB припиняють це з'єднання.