MariaDB und PHP-FPM hohe CPU-Auslastung

MariaDB und PHP-FPM hohe CPU-Auslastung

wir haben einen dedizierten Server, auf dem nur eine Domäne (Wordpress) mit 500 Benutzern pro Minute läuft und der sehr oft Timeouts hat. Serverspezifikationen: Intel(R) Xeon(R) CPU E5-1650 v3 @ 3,50 GHz (12 Kerne) 64 GB RAM 2 x 200 GB SSD Raid 0 Betriebssystem: Debian 9.6, Plesk Onyx 17.8, MariaDB 10, PHP-FPM 7.2

Wir haben gerade einige DB-Einstellungen angepasst, aber es treten immer noch Timeouts/Unterbrechungen auf. Die CPU-Auslastung von MariaDB beträgt 200 %, die von PHP-FPM 50 % CPU pro Instanz. Kann jemand helfen?

Hier ist die 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

#Abfrage-Cache-Limit = 1 M
#Abfrage-Cache-Größe = 16 M
Skip-Name-Resolve = 1
Tabellen-Cache = 8192
Tabellendefinitionscache = 8192
Tabellen-Öffnen-Cache = 16384
Sortierpuffergröße = 16 M
Abfrage-Cache-Limit = 24 M Abfrage-Cache-Größe
= 256 M
Join-Puffergröße = 10 M
Temporäre Tabellengröße = 512 M
Maximale Heap-Tabellengröße = 512 M
Innodb-Pufferpoolgröße = 24 G
Innodb-Pufferpoolinstanzen = 8
Innodb-Flush-Methode = O_DSYNC Innodb-
Flush-Log bei Trx-Commit = 0
Innodb-Lru-Scantiefe = 256

Antwort1

Einige Ihrer Tuning-Optionen sind gefährlich. Die meisten sind furchtbar kontraproduktiv. Lassen Sie Folgendes stehen und entfernen Sie den Rest:

innodb_buffer_pool_size=24G
skip_name_resolve=1

Stellen Sie dann ein:

slow_log=1
long_query_time=0

Erfassen Sie ein paar Stunden langsames Protokoll und leiten Sie es durch mysqldumpslow oder pt-query-digest. Korrigieren Sie die Abfragen, die am meisten CPU-Belastung verursachen, indem Sie sie besser indizieren oder effizienter neu verdrahten.

Antwort2

Eine detailliertere Analyse finden Sie unter: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

Off hand: query_cache_size = 256Mist zu hoch, was zu CPU-Aktivität führt, um es gelöscht zu halten. Inam meistenFällen ist es am besten, den Abfrage-Cache zu deaktivieren.

WordPress? Hier noch ein Tipp, allerdings mit Tabellenänderung dort: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

Meine Vorschläge zum Einrichten des Slowlogs:

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

verwandte Informationen