MYSQL——高 CPU

MYSQL——高 CPU

以下是我的配置值,我面临 CPU 使用率过高的问题。请提供适当的配置值。我的硬件规格:RAM 32GB;处理器 64 核;操作系统:Linx

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

key_buffer=10G
myisam_sort_buffer_size=128M
sort_buffer_size=32M

innodb_buffer_pool_size=20G
innodb_log_file_size=256M
innodb_log_buffer_size=4M
innodb_file_per_table
innodb_flush_log_at_trx_commit=0
innodb_thread_concurrency=32
innodb_concurrency_tickets=5000
innodb_flush_method=O_DIRECT
innodb_read_io_threads=64
innodb_write_io_threads=64

max_connections=5000
query_cache_size=256M
query_cache_type=1
query_cache_limit=512M
table_cache=1024
join_buffer_size=4M
thread_cache_size=128
tmp_table_size=256M
max_heap_table_size=256MB

答案1

query_cache_size=256M-- 超过 50M,越大越慢。降低该值。

key_buffer=10G-- 您使用的是ENGINE=MyISAM?一般来说,您不应该使用。如果您使用的是 MyISAM,请将其降低到 2G;如果没有,请进一步降低到 30M。

如果设置得太高,则会耗尽 RAM;这会导致交换,这会降低 MySQL 的速度。

一般来说,高 CPU(或高平均负载)意味着查询效率低下。找到该查询,然后提供EXPLAIN SELECT ...SHOW CREATE TABLE

答案2

如果不指定表使用的存储引擎,发布设置就毫无意义。

如果您正在使用 MyISAM - 您几乎肯定不应该这样做。

如果您只使用 InnoDB,key_buffer_size 和 myisam_sort_buffer_size 只是浪费您的内存。

性能不佳几乎与配置设置无关。它几乎总是与您正在运行的查询、您的表结构和索引有关。这通常是一项复杂的任务,需要数据库优化专家来完成。

相关内容