MariaDB e alta carga de CPU do PHP-FPM

Aug 26 2020

temos um servidor dedicado rodando apenas 1 domínio (Wordpress) com 500 usuários por minuto e muitas vezes temos timeouts. Especificações do servidor: Intel (R) Xeon (R) CPU E5-1650 v3 @ 3,50 GHz (12 core (s)) 64 GB de RAM 2 x 200 GB SSD Raid 0 SO: Debian 9.6, Plesk Onyx 17.8, MariaDB 10, PHP-FPM 7.2

Acabamos de ajustar algumas configurações do banco de dados, mas ainda temos os tempos limite / intervalos. MariaDB CPU Usage é 200%, PHP-FPM 50% CPU per Instance Alguém pode ajudar?

Aqui está o 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
Ir-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

Respostas

GordanBobic Aug 26 2020 at 02:21

Algumas de suas opções de ajuste são perigosas. A maioria é terrivelmente contraproducente. Deixe o seguinte e remova o resto:

innodb_buffer_pool_size=24G
skip_name_resolve=1

Em seguida, defina:

slow_log=1
long_query_time=0

Capture algumas horas de log lento e coloque-o em mysqldumpslow ou pt-query-digest, e corrija as consultas que estão consumindo a maior parte de sua CPU, através de uma melhor indexação ou religando-as com mais eficiência.

RickJames Aug 26 2020 at 06:55

Para uma análise mais detalhada, consulte: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

Off hand: query_cache_size = 256Mestá muito alto, levando à atividade da CPU para mantê-lo limpo. Na maioria dos casos, é melhor desligar o cache de consulta.

WordPress? Aqui está outra dica, mas envolve a troca de tabelas:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

Minhas sugestões sobre como configurar o 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