MariaDB y PHP-FPM alta carga de CPU

MariaDB y PHP-FPM alta carga de CPU

Tenemos un servidor dedicado que ejecuta solo 1 dominio (Wordpress) con 500 usuarios por minuto y muy a menudo tenemos tiempos de espera. Especificaciones del servidor: CPU Intel(R) Xeon(R) E5-1650 v3 a 3,50 GHz (12 núcleos) 64 GB de RAM 2 x 200 GB SSD Raid 0 Sistema operativo: Debian 9.6, Plesk Onyx 17.8, MariaDB 10, PHP-FPM 7.2

Acabamos de ajustar algunas configuraciones de la base de datos, pero todavía tenemos tiempos de espera/pausas. El uso de CPU de MariaDB es 200%, PHP-FPM 50% de CPU por instancia ¿Alguien puede ayudar?

Aquí está 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
= 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

Respuesta1

Algunas de sus opciones de ajuste son peligrosas. La mayoría son terriblemente contraproducentes. Deje lo siguiente y elimine el resto:

innodb_buffer_pool_size=24G
skip_name_resolve=1

Luego establezca:

slow_log=1
long_query_time=0

Capture algunas horas de registro lento y páselo por mysqldumpslow o pt-query-digest, y corrija las consultas que consumen la mayor parte de su CPU, mediante una mejor indexación o recableándolas de manera más eficiente.

Respuesta2

Para un análisis más detallado, consulte: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

Fuera de control: query_cache_size = 256Mes demasiado alto, lo que provoca que la actividad de la CPU la mantenga purgada. EnmayoríaEn estos casos, es mejor desactivar la caché de consultas.

¿WordPress? Aquí hay otro consejo, pero implica cambiar de mesa allí: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

Mis sugerencias sobre la configuración del registro lento:

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

información relacionada