Меню Закрыть

Mysql грузит процессор на 100

Мы сталкиваемся с проблемой высокой загрузки ЦП для процесса MySQL (почти 100%).
Вот информация, относящаяся к серверу

  1. Информация о сервере: Windows Server 2008 R2 Datacenter Edition с пакетом обновления 1 (SP1) i586
  2. PHP работает на: Microsoft-IIS / 7.5
  3. Версия PHP: 5.3.28
  4. MySql Server версия: 5.5.16 — MySQL Community Server (GPL)

Мы также добавляем код файла my.ini — конфигурационный файл mysql

И это код, который мы использовали в нашем скрипте для соединения с MySQL:

Пожалуйста, помогите нам понять, что не так с файлом my.ini или скриптом подключения, который вызывает 100% использование процессора для mysql или есть что-то другое, что нам нужно изменить.

Решение

MySQL с высоким ЦП не имеет отношения к PHP. Сначала нужно определить причину высокой загрузки ЦП, а затем поработать над этим. Выполните следующие действия, чтобы отследить фактическую причину

включить slow_query.log , Найти запросы, которые являются отличным кандидатом для оптимизации. Некоторые запросы в slow_query.log могут использовать много процессора

Проверьте статус этих, если вы получаете какую-либо подсказку

SHOW ENGINE INNODB STATUSG;
SHOW FULL PROCESSLIST;

Убедитесь, что все ваши столы де-фрагментарный

Увеличить innodb_buffer_pool_size чтобы было больше кеширования

Также настройте следующие параметры. Если возможно использовать mysqltuner.pl чтобы получить предлагаемые значения для настройки этих параметров в конфигурации MySQL

innodb_fast_shutdown=0
innodb_log_buffer_size
innodb_log_file_size
innodb_flush_method=O_DIRECT
query_cache_size=0

Всем добрый день! Прошу помощи, совета, подсказки в моей проблеме.

Имеем выделенный сервер 2х Xeon E5-2670, 64Gb RAM, 240Gb SSD. На сервере расположен единственный проект среднего уровня. В проекте присутствует база данных из 3 таблиц. Загруженность MySQL:

root@d:/var/log/mysql# mysqladmin status Uptime: 5562 Threads: 132 Questions: 581856 Slow queries: 0 Opens: 359 Flush tables: 1 Open tables: 322 Queries per second avg: 104.612

Читайте также:  Вывести таблицу значений в табличное поле

К таблицам выполняется достаточно большое количество запросов SELECT, UPDATE, INSERT.

Первая таблица — SELECT и UPDATE запросы, редко INSERT. Таблица InnoDB, примерно 12000 записей.

Вторая таблица основная, "рабочая", в ней постоянно присутствует

500 000 записей. INSERT, UPDATE, SELECT присутствует в полном объеме, в час пик порядка 300-400 запросов в секунду именно к этой таблице. MyISAM.

Третья таблица MyISAM, самая "тяжелая" — порядка 150 миллионов записей. Запросы к ней не частые, это INSERT (по 500-1000 строк) и SELECT (полнотекстовый). Ключи на месте, запросы выполняются быстро.

Расставлены ключи на основные поля, запросы выполняются достаточно быстро, slow-запросы в логах отсутствуют.

На сервере сайт расположен всего неделю, но уже сейчас в часы активности наблюдаются серьезные "провалы" в работе сайта. MySQL сильно грузит процессор, в htop’е периодически появляется

При этом Load average в пределах нормы и в целом сервер работает стабильно.

Ищу причины происходящего.

Что делал: -расставлял дополнительные ключи, сейчас практически все поля по которым -выполняются запросы являются ключами. — ковырялся в конфигурации mysql. Признаюсь честно, не эксперт в этом вопросе — поэтому ничего конкретного тут не сделано и пользы от этого не замечено

Подозреваю — нужно что то менять в конфиге mysql Возможно — переводить рабочую таблицу в InnoDB.

В интернете попадаются похожие проблемы, но решения найти не удалось.. Прошу помощи, друзья, в решении моей проблемы.

Процессор перманентно загружен на 100% процессом mysql

top
top — 13:24:21 up 4:42, 4 users, load average: 1.83, 2.17, 1.47
Tasks: 131 total, 1 running, 130 sleeping, 0 stopped, 0 zombie
%Cpu(s): 53.6 us, 0.3 sy, 0.0 ni, 45.7 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 8010676 total, 4730600 free, 1348236 used, 1931840 buff/cache
KiB Swap: 8191996 total, 8191996 free, 0 used. 6315452 avail Mem

Читайте также:  Как отключить рекламу в играх на андроид

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
989 mysql 20 0 1102844 125068 9580 S 100.0 1.6 177:50.28 mysqld
1300 elastic+ 20 0 3654932 903128 15380 S 7.7 11.3 29:20.12 java
2574 root 20 0 547868 16740 9468 S 0.3 0.2 0:07.21 core
9913 root 20 0 0 0 0 S 0.3 0.0 0:00.11 kworker/0:3
1 root 20 0 43232 3672 2440 S 0.0 0.0 0:04.38 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd

в таблице orgs_list 107957 записей
Что можно сделать чтобы нормализовать работу сервера?

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.