Mysql CPU 负载过高

Mysql CPU 负载过高

我有一台专用服务器,有 48 个核心、128 GB 内存、2 个 nvme 和 RAID。我有一个相当大的 WordPress 网站,有 5 GB 的 MySQL 数据库。该网站的并发流量为 200 到 700 个用户。服务器总是显示 MySQL 导致高内存和 CPUhtop 截图。我尝试了很多增强功能来减少负载,但没有找到满意的解决方案。我发现 MySQL 总是占用 100% 的磁盘空间,如上图所示屏幕截图。我尝试关注 mysqltuner.pl,结果如下mysqltuner 结果 这是my.cnf的内容:

tmp_table_size = 10G
query_cache_type=1
query_cache_size = 65M
query_cache_limit=256K
query_cache_min_res_unit = 2k
innodb_buffer_pool_size = 7409M
innodb_buffer_pool_instances=8
join_buffer_size = 256M
sort_buffer_size = 256M
read_buffer_size = 256M
read_rnd_buffer_size = 256M
innodb_log_file_size = 256M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
max_allowed_packet=268435456
open_files_limit=40000
innodb_file_per_table=1

先谢谢了

答案1

tmp_table_size = 10G

不!如果 13 个用户同时运行非常大的查询,那么 RAM 就会被占满!建议降低 RAM 的 1%。假设只有 500M。

那么,这如何导致高 I/O?一个顽皮的查询将首先填满 10G,然后如果它需要更多空间,它将把它写入磁盘。

进行此类查询的最简单方法是针对JOIN两个大表而不使用ON子句。

一个普遍的帮助(对于 CPU,以及潜在的 I/O)是改进 postmeta 上的索引: http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

相关内容