Назад | Перейти на главную страницу

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

у нас есть выделенный сервер, на котором работает только 1 домен (Wordpress) с 500 пользователями в минуту и ​​очень часто тайм-ауты. Технические характеристики сервера: Intel (R) Xeon (R) CPU E5-1650 v3 @ 3,50 ГГц (12 ядер) 64 ГБ RAM 2 x 200 ГБ 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 = 16 млн
max_allowed_packet = 16 млн
thread_stack = 192 КБ
thread_cache_size = 8
myisam_recover_options = РЕЗЕРВНОЕ КОПИРОВАНИЕ
max_connections = 200
#table_cache = 64
#thread_concurrency = 10

#query_cache_limit = 1 млн
#query_cache_size = 16 МБ
пропустить имя-разрешение = 1
table_cache = 8192
table_definition_cache = 8192
table_open_cache = 16384
sort_buffer_size = 16 млн
query_cache_limit = 24 млн
query_cache_size = 256 МБ
join_buffer_size = 10 млн
tmp_table_size = 512 МБ
max_heap_table_size = 512 МБ
innodb_buffer_pool_size = 24 ГБ
innodb_buffer_pool_instances = 8
innodb_flush_method = O_DSYNC
innodb_flush_log_at_trx_commit = 0
innodb_lru_scan_depth = 256

Для более подробного анализа см .: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

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

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

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

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

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

innodb_buffer_pool_size=24G
skip_name_resolve=1

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

slow_log=1
long_query_time=0

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