Процесс MySQL, занимающий 150-400% процессорного времени - PullRequest
0 голосов
/ 06 декабря 2018

Мое программное обеспечение делает много запросов MySQL к моему серверу, и у меня никогда не было проблем с ним в прошлом, но совсем недавно ничего не загружалось, ни веб-страниц, ни SQL не работали, ничего.Мне удалось подключиться к серверу WHM для моего сервера и завершить процесс, только чтобы наблюдать за тем, как он набирает скорость до 300%.Ничто из того, что я смог сделать, не заставило его упасть.Какой информацией мне нужно поделиться, чтобы получить помощь в этом?Я не являюсь системным администратором, и у меня нет ни одного, ни ресурсов для одного.Обычно я не просил бы о помощи и просто оптимизировал бы все свои запросы для чего-то подобного, поскольку это не было проблемой в течение последних 3 месяцев, но внезапно стало одним из ниоткуда, по крайней мере, я этого не заметил.На данный момент моя программа говорит, что одна из моих таблиц базы данных потерпела крах и нуждается в ремонте ... Что я могу сделать?Заранее благодарен за любую помощь ...

Я уже рассматривал оптимизацию, но я надеялся, что быстрое решение будет реализовано, так как клиенты ждут меня, и я могу потратить несколько дней на оптимизацию своего SQL, что,как я уже сказал, раньше проблем не было.Я запутался в этом.

Также я не уверен, поможет ли это, но отслеживание процесса в WHM печатает это несколько раз и ничего больше:

fcntl(16, F_GETFL)                      = 0x2 (flags O_RDWR)
fcntl(16, F_SETFL, O_RDWR|O_NONBLOCK)   = 0
accept(16, {sa_family=AF_LOCAL, NULL}, [2]) = 35
fcntl(16, F_SETFL, O_RDWR)              = 0
setsockopt(35, SOL_IP, IP_TOS, [8], 4)  = -1 EOPNOTSUPP (Operation not supported)
futex(0x13298a4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x13298a0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x1327240, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=14, events=POLLIN}, {fd=16, events=POLLIN}], 2, -1) = 1 ([{fd=16, revents=POLLIN}])

/ etc / my.conf

innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000

Это все, что мне доступно в файле my.conf.Журнал ошибок не существует в /var/log, поэтому мне нечего дать по этому поводу ...

Версия SQL: [Server] # mysql -V mysql Ver 14.14 Distrib 5.6.41, for Linux (x86_64) using EditLine wrapper

У меня есть дополнительный вопрос илидополнение к этому.Я не знаю, имеет ли это большое значение, но, скажем, мой код выполняется с использованием 30% ЦП в процессе mysql, я могу фактически отключить код, и использование ЦП процесса mysql не изменится.Что это значит?

Редактировать: (все они истекают в течение недели с 12/09/2018)

Содержимое файла my.cnf, которое я перечислил, - это все, что там было.Ничего больше.Я получу команду top и iostat -xm 5 3, когда снова запустлю программное обеспечение на полной скорости, чтобы увидеть результаты.

1 Ответ

0 голосов
/ 11 декабря 2018

Частота в секунду = RPS Предложения для рассмотрения на основе вашего отчета ulimit -a в Linux.

ulimit -n 16384       to raise Open Files limit from 1024 to support your activities.

Чтобы сохранить это после завершения работы / завершения работы Linux, просмотрите этот URL.

https://glassonionblog.wordpress.com/2013/01/27/increase-ulimit-and-file-descriptors-limit/

Ваши особенности могут немного отличаться из-за версии Linux.

Предложения для вашего раздела my.cnf [mysqld]

innodb_lru_scan_depth=100  # from 1024 to reduce CPU busy every second.  93% savings for this one function.
thread_cache_size=32  # from 9 for thread breathing room and growth.
innodb_io_capacity=1800  # from 200 to take advantage of your HDD IOPS capacity
key_cache_age_threshold=7200  # from 300 seconds to reduce key_reads RPS of 16 
query_cache_size=0  # from 1M to conserve RAM - QC is OFF and not used
query_cache_limit=0  # from 1M to conserve RAM - QC is OFF and not used
key_buffer_size=128M  # from 8M which had NO free space at the end of your work day

Для дополнительных предложенийсм. мой профиль, профиль сети для контактной информации.

...