Мой веб-сайт работает очень медленно или не отвечает. Беглый взгляд на top
команда показывает мне что-то вроде этого:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1709 mysql 20 0 828m 432m 5584 S 382.6 5.4 7414:24 mysqld
Остальные процессы намного ниже этих значений. Очевидно, у MySQL есть некоторые проблемы. Как я могу проверить, что на самом деле происходит и почему для этого требуется так много ресурсов?
Спасибо.
Бегать show processlist
в консоли mysql, чтобы получить список текущих запросов. Поищите те, которые были запущены некоторое время, и посмотрите, что они делают. Скорее всего, есть несколько запросов, выполняющих чудовищный объем работы (обычно из-за плохих индексов).
Помимо ответ Womble (которые указывают на оптимизацию ваших запросов); для тех, кого озадачивает 382,6% использования ЦП, обратите внимание, что MySQL - это многопоточный сервер. Вероятно, он запускал 4 потока на полную мощность, почти монополизировав 4 ядра (я уверен, что он может сделать даже больше на достаточно большой машине). Нажатие 'H' на top
показывает каждый поток отдельно.
Вам также следует взглянуть на журнал медленной работы mysql, если он включен.