Carico elevato della CPU MariaDB e PHP-FPM
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
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.
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