Как обнаружить процесс (и запрос mysql), который делает высокую нагрузку на сервер?

Вы могли попытаться использовать PsExec. Если пакетный файл присутствует во всех машинах в том же местоположении, то Вы могли упомянуть список машин в текстовом файле и дать его как аргумент этому. Что-то как,

psexec @ 

Если у Вас нет его на удаленной машине, необходимо скопировать пакетный файл и затем выполнить его использование,

psexec @ -c 

1
задан 29 September 2011 в 20:18
3 ответа

Высокая нагрузка на сервер, обычно вызываемая дисковым вводом-выводом. Есть несколько способов определить, какой процесс ожидает дискового ввода-вывода:

  • iotop
  • top -b -i -n 10
  • поверх и нажмите D
  • htop ] -> F2 , чтобы добавить 2 столбца IO_RBYTES и IO_WBYTES , затем F6 для сортировки
  • ...

Вы следует особенно обратить внимание на процессы в состоянии D (непрерывный сон):

watch "ps -eo pid,user,state,command | awk '\$3 == /D/ { print \$0 }'"
5
ответ дан 3 December 2019 в 16:38
SHOW FULL PROCESSLIST\G

ищите что-то с длительным временем выполнения.

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

В противном случае вы можете использовать что-то вроде бесплатного версия Jet ( http://www.jetprofiler.com/ )

Garrett

2
ответ дан 3 December 2019 в 16:38

Если mysql является причиной высокой нагрузки, то Mysql поддерживает аргумент slow_query_log , и один раз включен, он будет регистрировать любые особенно медленные запросы к файлу;
http://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html

Журнал медленных запросов состоит из SQL операторы, выполнение которых заняло более long_query_time секунд и требовало проверки не менее min_examined_row_limit строк. Минимальные значения и значения по умолчанию для long_query_time равны 0 и 10.

0
ответ дан 3 December 2019 в 16:38

Теги

Похожие вопросы