Как найти причину Sleep процессов в Mysql?

Y
На сайте с 27.12.2011
Offline
106
927

Не судите строго. Я делаю сайты, администрированием серверов не занимаюсь - для этого у меня есть человек, который , как обычно бывает у такого типа людей "вечно занят".

Вообщем проблема. Есть многостраничный сайт, посещения не сказать, что много, 300-500тыс просмотров в сутки. Phph 7.3, Mysql 8, InnoDB

За последнюю неделю стали появляться Sleep процессы в базе. Причем они как появляются, так и исчезают быстро, 0 секунд повисят и уходят. Но они есть. И их одномоменто 10-50 штук. Исчезают сами, 90% сразу, 10% спустя несколько секунд (не более 30) . Сайт стал медленнее открываться. Ранее было менее 1 сек, сейчас 2-3  сек. Я связываю это со sleep-ами.

Последний месяц в скрипты не лазил, но перестраивал индексы в таблицах - это помогло повлиять на кол-во sleep-ов?

Админ говорит ищи скрипты которые не закрывают соединение. Но  у меня их дохрена (скриптов). Подскажите , как можно сузить поиски или может быть есть какое-то средство в linux где можно это дело отследить?

err_log и mysql_query_slow  ответа не дают :(

jpg 2020-07-17_09-43-09.jpg
Евгений Крупченко
На сайте с 27.09.2003
Offline
178
#1

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

нередко у народа скрипты что-то запрашивают из внешних источников - вот вам замедляющий фактор, от которого ваш сайт будет рандомно больше/меньше тормозить.

ну или кто знает что там происходит, надо только смотреть...


сами sleep'ы ничего не замедлеют. как вам правильно сказали, скрипты открывают соединение, что-то делают с базой и потом болт забивают на закрытие. так оно и висит.

если мазолит глаза, добавьте в конфиг mysql например wait_timeout=1 и тогда mysql сама будет обрывать все соединения, которые секунду бездействуют.

но тогда логи начнут изобиловать сообщениями типа "[Warning] Aborted connection to db .....  (Got timeout reading communication packets)".


возможно количество sleep'ов это просто результат того что скрипты стали исполняться как говорите в 2-3 раза дольше. т.е. они и раньше были, но теперь просто больше стало т.к. больше времени проходит от запуска до завершения скрипта. возможно к базе подключается вначале, а закрывает соединение в конце. и вот эти несколько секунд коннект висит в статусе sleep.


в общем сперва надо решить проблему с медленным сайтом, а sleep'ы потом возможно сами и уйдут.

SeVlad
На сайте с 03.11.2008
Offline
1609
#2
yuraabr :
посещения не сказать, что много, 300-500тыс просмотров в сутки.

Кому-то суп жидок, кому-то жемчуг мелок :)

yuraabr :
И их одномоменто 10-50 штук.

Если запросы одинаковые, то  надо делать кеширование результатов.


Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
M
На сайте с 17.09.2016
Offline
124
#3

Это одновременные подключения к базе

Проще говоря у Вас скрипт на старте подключился к базе, и к концу обработки - отключился

Когда скрипт ничего не отправляет в базу (как Выше заметили, например ждёт ответа от другого сервера), mysql это время в command отображает как sleep

Плохого в этом нет ничего, когда на сайте много посетителей

Исправить это можно только оптмизацией, чтобы скрипт быстрее отрабатывал и отключался от базы

Y
На сайте с 27.12.2011
Offline
106
#4
т.е. пока я так понимаю, что нужно скрипты, которые долбятся к чужим серверам отключать по очереди и наблюдать за процессами  в базе, там где Sleep станет меньше - там проблема... попробую
Y
На сайте с 27.12.2011
Offline
106
#5
SeVlad #Если запросы одинаковые, то  надо делать кеширование результатов.

так в том то и дело, это sleep -  не понятно кто и откуда их вызвал
SeVlad
На сайте с 03.11.2008
Offline
1609
#6
yuraabr #:
пока я так понимаю, что нужно скрипты, которые долбятся к чужим серверам отключать по очереди и наблюдать за процессами  в базе, там где Sleep станет меньше - там проблема... попробую

Какое отношение твоя база имеет к чужим серверам? Думаю что никакого. А посему - не там проблема.

yuraabr #:
не понятно кто и откуда их вызвал
Понятно что надо изучать логи запросов. Но не понятно, почему вопрос на форум если есть админ.
F
На сайте с 17.04.2018
Offline
18
#7
yuraabr :
Не судите строго. Я делаю сайты, администрированием серверов не занимаюсь - для этого у меня есть человек, который , как обычно бывает у такого типа людей "вечно занят".

Эм, а может нанять спеца, который будет занят решением именно ваших вопросов? Или вы своему человеку деньги не платите?

Andreyka
На сайте с 19.02.2005
Offline
822
#8

Проблема слип-процессов зачастую надумана

Мб в настройка движка убрать персист коннекты и все

Не стоит плодить сущности без необходимости

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий