В последнее время мой серверный процессор был очень высоким.
Загрузка процессора в среднем составляет 13,91 (1 мин), 11,72 (5 мин), 8,01 (15 мин), и трафик на моем сайте был незначительным.
После запуска команды top, я увидел, что MySQL использует 160% CPU!
Недавно я оптимизировал таблицы и переключился на постоянные соединения. Может ли это быть причиной того, что MySQL использует большое количество процессоров?
Ответы:
Сначала я бы сказал, что вы, вероятно, хотите отключить постоянные соединения, поскольку они почти всегда приносят больше вреда, чем пользы.
Во-вторых, я бы сказал, что вы хотите дважды проверить пользователей MySQL, просто чтобы убедиться, что никто не может подключиться с удаленного сервера. Это также важная вещь для проверки безопасности.
В-третьих, я бы сказал, что вы хотите включить MySQL Slow Query Log, чтобы следить за любыми запросами, которые занимают много времени, и использовать его, чтобы убедиться, что у вас нет запросов, блокирующих таблицы ключей слишком долго.
Некоторые другие вещи, которые вы можете проверить, это выполнить следующий запрос при высокой загрузке процессора:
Это покажет вам любые запросы, которые в данный момент выполняются или находятся в очереди для выполнения, что это за запрос и что он делает (эта команда будет обрезать запрос, если он слишком длинный, вы можете использовать SHOW FULL PROCESSLIST, чтобы увидеть полный текст запроса) ,
Вы также хотите , чтобы держать глаза на такие вещи , как ваш размер буфера, кэш - таблицы , кэш запросов и innodb_buffer_pool_size (если вы используете InnoDB таблиц) , как все эти выделения памяти могут иметь влияние на производительность запросов , которые могут привести к MySQL к кушай процессор.
Вы также, вероятно, захотите прочитать следующие материалы, так как они содержат полезную информацию.
Также очень хорошая идея использовать профилировщик. То, что вы можете включить, когда захотите, покажет вам, какие запросы выполняет ваше приложение, есть ли дублирующие запросы, сколько времени они занимают, и т. Д., И т. Д. Примером чего-то подобного является тот, над которым я работал PHP Profiler, но есть много там. Если вы используете какое-либо программное обеспечение, такое как Drupal, Joomla или Wordpress, вам нужно будет поинтересоваться в сообществе, поскольку, вероятно, для них доступны модули, которые позволяют вам получать эту информацию без необходимости что-либо интегрировать вручную.
источник
Поскольку это верхний пост, если вы пользуетесь Google для MySQL высокой загрузкой процессора или загрузкой, я добавлю дополнительный ответ:
1 июля 2012 года была добавлена дополнительная секунда к текущему времени UTC, чтобы компенсировать замедление вращения Земли из-за приливов. При запуске ntp (или ntpd) эта секунда добавлялась к часам вашего компьютера / сервера. MySQLd, похоже, не нравится эта дополнительная секунда в некоторых ОС, и приводит к высокой загрузке процессора. Быстрое исправление (от имени root):
источник
date
" && service ntp start Использование ЦП MySQL мгновенно упало с 50 - 100% до 0 - 1%sudo service ntpd stop
на этой конфигурации.Если этот сервер виден внешнему миру, стоит проверить, есть ли у него множество запросов на подключение из внешнего мира (то есть людей, пытающихся проникнуть на него)
источник