Высокая загрузка процессора MariaDB и PHP-FPM

Высокая загрузка процессора MariaDB и PHP-FPM

у нас есть выделенный сервер, на котором работает только 1 домен (Wordpress) с 500 пользователями в минуту и ​​очень часто возникают тайм-ауты. Характеристики сервера: Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz (12 core(s)) 64GB RAM 2 x 200GB SSD Raid 0 ОС: Debian 9.6, Plesk Onyx 17.8, MariaDB 10, PHP-FPM 7.2

Мы только что настроили некоторые параметры БД, но тайм-ауты/перерывы все еще есть. Загрузка ЦП MariaDB составляет 200%, PHP-FPM — 50% ЦП на экземпляр. Может ли кто-нибудь помочь?

Вот my.cnf
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam_recover_options = BACKUP
max_connections = 200
#table_cache = 64
#thread_concurrency = 10

#query_cache_limit = 1M
#query_cache_size = 16M
skip-name-resolve = 1
table_cache = 8192
table_definition_cache = 8192
table_open_cache = 16384
sort_buffer_size = 16M
query_cache_limit = 24M
query_cache_size = 256M
join_buffer_size = 10M
tmp_table_size = 512M
max_heap_table_size = 512M
innodb_buffer_pool_size = 24G
innodb_buffer_pool_instances = 8
innodb_flush_method = O_DSYNC
innodb_flush_log_at_trx_commit = 0
innodb_lru_scan_depth = 256

решение1

Некоторые из ваших вариантов настройки опасны. Большинство из них ужасно контрпродуктивны. Оставьте следующее и удалите остальное:

innodb_buffer_pool_size=24G
skip_name_resolve=1

Затем установите:

slow_log=1
long_query_time=0

Соберите несколько часов медленного журнала и пропустите его через mysqldumpslow или pt-query-digest, а затем исправьте запросы, которые потребляют большую часть ресурсов вашего ЦП, с помощью лучшей индексации или более эффективной переподключения.

решение2

Более подробный анализ см. здесь: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

Off hand: query_cache_size = 256Mслишком высок, что приводит к активности ЦП, чтобы держать его очищенным. Вбольшинствослучаях лучше отключить кэширование запросов.

WordPress? Вот еще один совет, но он подразумевает изменение таблиц там: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

Мои предложения по настройке slowlog:

log_output = FILE
slow_query_log = ON
slow_query_log_file = (fullpath to some file)
long_query_time = 1
log_slow_admin_statements = ON
log_queries_not_using_indexes = OFF

http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog

Связанный контент