Как такое может быть 359:22.95 mysqld

12
softvariant.ru
На сайте с 18.05.2008
Offline
22
1599

Периодически появляется висящий процесс mysqld, который висит очень долго, много жрет ресурсов и неизвестно что делает, вот строка, показываемая командой top:


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
344 mysql 15 0 227m 217m 3784 R 62 6.1 359:22.95 mysqld

Т.е. смущает время 359:22.95 - это разве нормально? из-за чего это может быть, как можно полечить?

размещаю ссылки сквозняком ЯК ТИЦ 300 ПР 5
Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#1

mysql обычно всякие выборки делает, вставки и обновления..

Так как mysql сервер не запускается для каждого нового запроса, то его суммарное процессорное время может быть достаточно большим.

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
softvariant.ru
На сайте с 18.05.2008
Offline
22
#2

командой top я обычно вижу много процессов mysqld, они появляются отрабатывают и закрываются, означает ли это, что есть некий один процесс, который висит всегда, а остальные запускаются по мере необходимости? с др. стороны если я убиваю приведенный ввыше странный процесс, то все продолжает работать также, даже лучше (все сайты продолжают работать), только освобождаются ресуры, занятые этим процессом, это память + проц (поэтому визульано наблюдается прирост скорости работы сайтов).

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#3

Скорее всего, этот процесс обрабатывает какой-то медленный запрос. Попробуйте включить лог медленных запросов и вычислить его, либо посмотреть что-то странное в SHOW FULL PROCESSLIST;

Boris A Dolgov добавил 27.11.2008 в 22:37

Если единовременно запущено много процессов mysql (больше 50), я бы советовал смотреть уже в сторону оптимизации серверного ПО

A4
На сайте с 09.08.2007
Offline
55
#4

mysql процесс один. Всё остальное - треды.

Настройка nginx и сопутствующего софта на freebsd/debian. Контакт через PM.
Lupus
На сайте с 02.11.2002
Offline
241
#5
softvariant.ru:
означает ли это, что есть некий один процесс, который висит всегда, а остальные запускаются по мере необходимости?

Сами процессы не запускаются. Их кто-то должен запустить. Догадайтесь, кто это делает в mysql?

А по сабжу, поставьте mytop и полюбопытствуйте, кто там у вас такой толстый. Или попросту: mysql --execute="show processlist"

There are two types of people in this world: 1. Those who can extrapolate from incomplete data.
DA
На сайте с 04.02.2005
Offline
165
#6
Если единовременно запущено много процессов mysql (больше 50), я бы советовал смотреть уже в сторону оптимизации серверного ПО

обычно кол-во процессов ограничено кол-вом ядер

тыщ-пыщ
softvariant.ru
На сайте с 18.05.2008
Offline
22
#7
Lupus:
А по сабжу, поставьте mytop и полюбопытствуйте, кто там у вас такой толстый. Или попросту: mysql --execute="show processlist"

Спасибо за mytop, отличная прога. Висящих необъятное количество времени запросов не обнаружено. Прога выдает такую шапку:


Queries: 1.0M qps: 131 Slow: 0.0 Se/In/Up/De(%): 16/00/00/00
qps now: 181 Slow qps: 0.0 Threads: 46 ( 5/ 0) 15/00/00/00
Key Efficiency: 100.0% Bps in/out: 0.5/125.3 Now in/out: 8.4/ 1.9k

Тем не менее, один процесс mysqld явно уже выделяется среди остальных с временем 65:52.40 mysqld против ближайших конкурентов 0:51.32 mysqld

softvariant.ru добавил 28.11.2008 в 02:30

Alexei42:
mysql процесс один. Всё остальное - треды.

С чего это top будет выдавать треды, там никаких экранов не хватитило бы для вывода. Например, memcached в top показывается одним процесом, в то время, как реально работают 4 треда.

Lupus
На сайте с 02.11.2002
Offline
241
#8
softvariant.ru:
Тем не менее, один процесс mysqld явно уже выделяется среди остальных

Это не официальная документация, но интересные заметки:

Как известно, mysqld это "один процесс - много тредов". В достаточно приближенном понимании тред (thread) это когда процесс копирует сам себя, и родительский процесс передает треду какую то задачу для решения.
Создание треда отличается от обычного fork() в основном тем, что fork порождает +1 процесс, тогда как деление на треды использует другую, более производительную технологию ветвления без клонирования данных в памяти.

При каждом подключении клиента, mysql создает тред, который это подключение обрабатывает.
RAS
На сайте с 27.11.2005
Offline
126
RAS
#9

Это время процессора, если работает нормально, то не мешайте mysql работать ;)

Администрируем сервера, впс, вдс. Ускоряем загрузку сайтов - DLE, Word Press, Joomla, Modx... Настраиваем безопасность. Ручная чистка rootkit/malware/вирусов. (/ru/forum/867860) Разработка - shell/bash/sh/python/perl.
softvariant.ru
На сайте с 18.05.2008
Offline
22
#10
RAS:
Это время процессора, если работает нормально, то не мешайте mysql работать ;)

Так вот на пределе работает ж, ищем рычаги, что можно подкрутить. Например, при сбросе кеша в memcached сервер просто практически подвисает минут на 10-15, пока новые запросы не станут активно выниматься из кеша в обход базы.

12

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