MariaDB และ PHP-FPM cpu โหลดสูง
เรามีเซิร์ฟเวอร์เฉพาะที่ทำงานเพียง 1 โดเมน (Wordpress) ที่มีผู้ใช้ 500 คนต่อนาทีและมีการหมดเวลาบ่อยมาก ข้อมูลจำเพาะเซิร์ฟเวอร์: Intel (R) Xeon (R) CPU E5-1650 v3 @ 3.50GHz (12 core (s)) 64GB RAM 2 x 200GB SSD Raid 0 OS: Debian 9.6, Plesk Onyx 17.8, MariaDB 10, PHP-FPM 7.2
เราเพิ่งปรับการตั้งค่า DB บางอย่าง แต่ยังคงมีการหมดเวลา / ช่วงพัก MariaDB CPU Usage 200%, PHP-FPM 50% CPU per Instance มีใครช่วยได้บ้าง?
นี่คือ 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
เฮี๊ยบชื่อ-แก้ไข = 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
คำตอบ
ตัวเลือกการปรับแต่งบางอย่างของคุณเป็นอันตราย ส่วนใหญ่ต่อต้านอย่างน่ากลัว ปล่อยให้สิ่งต่อไปนี้และลบส่วนที่เหลือ:
innodb_buffer_pool_size=24G
skip_name_resolve=1
จากนั้นตั้งค่า:
slow_log=1
long_query_time=0
บันทึกบันทึกการทำงานช้าสองสามชั่วโมงและนำไปไว้ใน mysqldumpslow หรือ pt-query-Digest และแก้ไขคำค้นหาที่กิน CPU ส่วนใหญ่ของคุณผ่านการจัดทำดัชนีที่ดีขึ้นหรือการเดินสายใหม่อย่างมีประสิทธิภาพมากขึ้น
สำหรับการวิเคราะห์โดยละเอียดเพิ่มเติมโปรดดู: http://mysql.rjweb.org/doc.php/mysql_analysis#tuning
มือปิด: query_cache_size = 256Mสูงเกินไปซึ่งนำไปสู่การทำงานของ CPU เพื่อกำจัดมัน ในกรณีส่วนใหญ่ควรปิดแคชแบบสอบถาม
WordPress? นี่เป็นเคล็ดลับอีกประการหนึ่ง แต่เกี่ยวข้องกับการเปลี่ยนตารางที่นั่น:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta
คำแนะนำของฉันเกี่ยวกับการตั้งค่า 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