Carico elevato della CPU MariaDB e PHP-FPM

Aug 26 2020

abbiamo un server dedicato che esegue solo 1 dominio (Wordpress) con 500 utenti al minuto e molto spesso abbiamo timeout. Specifiche server: CPU Intel (R) Xeon (R) E5-1650 v3 a 3,50 GHz (12 core) 64 GB di RAM 2 x 200 GB SSD Raid 0 OS: Debian 9.6, Plesk Onyx 17.8, MariaDB 10, PHP-FPM 7.2

Abbiamo appena messo a punto alcune impostazioni del DB ma abbiamo ancora i timeout / le interruzioni. L'utilizzo della CPU MariaDB è del 200%, PHP-FPM 50% CPU per istanza Qualcuno può aiutare?

Ecco il 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-nome-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

Risposte

GordanBobic Aug 26 2020 at 02:21

Alcune delle tue opzioni di ottimizzazione sono pericolose. La maggior parte sono orrendamente controproducenti. Lascia quanto segue e rimuovi il resto:

innodb_buffer_pool_size=24G
skip_name_resolve=1

Quindi impostare:

slow_log=1
long_query_time=0

Cattura alcune ore di log lento e inseriscilo in mysqldumpslow o pt-query-digest e correggi le query che consumano la maggior parte della tua CPU, attraverso una migliore indicizzazione o un ricablaggio più efficiente.

RickJames Aug 26 2020 at 06:55

Per un'analisi più dettagliata, vedere: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

Fuori mano: query_cache_size = 256Mè troppo alto, porta ad attività della CPU per mantenerlo eliminato. Nella maggior parte dei casi, è meglio disattivare la cache delle query.

WordPress? Ecco un altro suggerimento, ma implica cambiare i tavoli lì:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

I miei suggerimenti sulla configurazione dello 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