MariaDB và PHP-FPM tải cpu cao
chúng tôi có một máy chủ chuyên dụng chỉ chạy 1 miền (Wordpress) với 500 người dùng mỗi phút và rất thường xuyên hết giờ. Thông số máy chủ: CPU Intel (R) Xeon (R) E5-1650 v3 @ 3,50GHz (12 lõi) 64GB RAM 2 x 200GB SSD Raid 0 Hệ điều hành: Debian 9.6, Plesk Onyx 17.8, MariaDB 10, PHP-FPM 7.2
Chúng tôi vừa điều chỉnh một số cài đặt DB nhưng vẫn có thời gian chờ / ngắt. Mức sử dụng CPU MariaDB là 200%, CPU PHP-FPM 50% cho mỗi phiên bản Bất cứ ai có thể giúp đỡ?
Đây là 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
bỏ qua-name-quyết tâm = 1
table_cache = 8192
table_definition_cache = 8192
table_open_cache = 16384
sort_buffer_size = 16 triệu
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
Trả lời
Một số tùy chọn điều chỉnh của bạn rất nguy hiểm. Hầu hết đều phản tác dụng một cách khủng khiếp. Để lại phần sau và xóa phần còn lại:
innodb_buffer_pool_size=24G
skip_name_resolve=1
Sau đó đặt:
slow_log=1
long_query_time=0
Ghi lại nhật ký chậm vài giờ và đưa nó qua mysqldumpslow hoặc pt-query-dig, đồng thời sửa các truy vấn đang ngốn phần lớn CPU của bạn, thông qua lập chỉ mục tốt hơn hoặc tua lại chúng hiệu quả hơn.
Để biết phân tích chi tiết hơn, hãy xem: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning
Tắt tay: query_cache_size = 256Mlà quá cao, dẫn đến hoạt động của CPU để giữ cho nó được thanh lọc. Trong hầu hết các trường hợp, cách tốt nhất là tắt bộ nhớ cache truy vấn.
WordPress? Đây là một mẹo khác, nhưng nó liên quan đến việc thay đổi bảng ở đó:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta
Đề xuất của tôi về cách thiết lập sổ chậm:
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