Мне кажется, что в SQL всегда есть одна задача, которая выполняется на моем сервере на работе, и мои личные вещи, которые «застревают» и продолжают работать вечно.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
890 mysql 20 0 326m 54m 7704 S 9999 1.4 13:05.03 mysqld
Есть ли способ настроить бота, чтобы он находил подобные вещи, выключил его и перезапустил MySQL, чтобы мне не приходилось делать это вручную?
Обновить
Я должен отметить, что он не всегда остается на 9999% ЦП. Иногда показывает 1.4 или что-то в этом роде
Вы запускали сценарий настройки MySQL, например mysqltuner.pl или tuning-primer.sh чтобы убедиться, что ваши базовые настройки MySQL верны?
Вы не можете просто произвольно изменить значения настроек на то, что есть у кого-то, поскольку конфигурация сильно зависит от доступных аппаратных ресурсов, объема хранимых данных и запросов, выполняемых для этих данных. Конфигурация MySQL, которая отлично работает на моем сервере, может убить ваш сервер.
Вы никогда не должны перезапускать базу данных, чтобы завершить запрос. В MySQL вы можете просматривать запущенные запросы с помощью show full processlist;
и завершить процесс с помощью kill $CONNECTIONNUMBER;
.
Вы можете написать сценарий для выполнения этой функции.
Я разговаривал с одним из моих администраторов баз данных MySQL, и он упомянул мне, что key_buffer_size может быть установлен по умолчанию, что может быть причиной высокой загрузки ЦП. Обычно увеличение значения по умолчанию с 8 МБ до примерно 330 МБ, если ресурсы памяти доступны, должно помочь решить эту проблему. Это изменение потребует периода обслуживания для перезапуска служб MySQL.