MariaDB 및 PHP-FPM 높은 CPU 부하

MariaDB 및 PHP-FPM 높은 CPU 부하

우리는 분당 500명의 사용자가 있는 1개의 도메인(Wordpress)만 실행하는 전용 서버를 보유하고 있으며 시간 초과가 매우 자주 발생합니다. 서버 사양: Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz(12 코어) 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 사용량은 인스턴스당 200%, PHP-FPM 50% CPU입니다. 누구든지 도와주실 수 있나요?

다음은 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_ 크기 = 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_length = 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_analytic#tuning

오프 핸드(Off hand): query_cache_size = 256M너무 높기 때문에 CPU 활동으로 인해 퍼지 상태를 유지하게 됩니다. ~ 안에최대경우에는 쿼리 캐시를 끄는 것이 가장 좋습니다.

워드프레스? 여기에 또 다른 팁이 있지만 거기에서 테이블을 변경하는 것이 포함됩니다. 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_analytic#slow_queries_and_slowlog

관련 정보