у нас есть выделенный сервер, на котором работает только 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, и исправьте запросы, которые потребляют большую часть вашего процессора, за счет лучшей индексации или более эффективного их переназначения.