MariaDB 和 PHP-FPM 高 CPU 負載

MariaDB 和 PHP-FPM 高 CPU 負載

我們有一台專用伺服器,僅運行 1 個網域(Wordpress),每分鐘 500 個用戶,並且經常超時。伺服器規格:Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz(12 核心)64GB RAM 2 x 200GB SSD Raid 0 作業系統:Debian 9.6、Plesk Onyx 17.8、MariaDB 10、PHPFPM 7.

我們剛剛調整了一些資料庫設置,但仍然存在超時/中斷。 MariaDB CPU 使用率為 200%,PHP-FPM 每個實例 50% CPU 有人可以幫忙嗎?

這是my.cnf
key_buffer_size = 16M
max_allowed_pa​​​​cket = 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
跳過名稱解析 = 1
table_cache = 8192
table_definition_cache = 8192
table_open_cache = 16384
sort_buffer_size = 16M
_ache_bache_yquem_pache_x 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_深度 = 256







答案1

您的某些調整選項是危險的。大多數都會適得其反。保留以下內容並刪除其餘內容:

innodb_buffer_pool_size=24G
skip_name_resolve=1

然後設定:

slow_log=1
long_query_time=0

捕獲幾個小時的慢速日誌並將其放入 mysqldumpslow 或 pt-query-digest,並透過更好的索引或更有效地重新連接它們來修復佔用大部分 CPU 的查詢。

答案2

更詳細的分析請參見: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

Off hand: query_cache_size = 256M太高,導致 CPU 活動無法維持清除。在最多這種情況下,最好關閉查詢快取。

WordPress?這是另一個技巧,但它涉及更改表: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

我對設定慢日誌的建議:

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

相關內容