You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress站点mysqld进程CPU占用过高问题求助

兄弟,2435%的MySQL CPU占用确实够吓人的——哪怕你有32线程的双Xeon,这也把绝大多数核心都吃满了。结合你这50万文章的WP大站配置,给你一步步捋排查和解决的思路:

第一步:先抓出MySQL里的“罪魁祸首”

首先得搞清楚到底是哪些查询在疯狂耗CPU:

  • 直接登录MySQL,执行SHOW FULL PROCESSLIST;,看有没有长时间运行的查询、锁等待或者重复刷出来的高频查询。如果列表刷得太快抓不住,就临时开慢查询日志:
    SET GLOBAL slow_query_log = 'ON';
    SET GLOBAL long_query_time = 1; -- 把执行超过1秒的查询全记录下来
    SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-queries.log';
    
    等个5-10分钟,用mysqldumpslow -s t /var/log/mysql/slow-queries.log分析慢查询,重点看那些执行时间长、调用次数多的SQL——大概率是WP插件/主题生成的低效查询,或者没加索引的表操作。
第二步:排查WordPress专属问题

50万文章的WP站,最容易出问题的就是插件和数据库索引:

  • 低效插件/主题查询:很多统计、SEO类插件会反复查wp_posts、wp_postmeta表,而且不带索引。比如用meta_key做筛选却没建索引,你可以先查下wp_postmeta的索引情况:
    SHOW INDEX FROM wp_postmeta;
    
    如果没有meta_key+post_id的联合索引,赶紧补上:
    CREATE INDEX idx_postmeta_key_post ON wp_postmeta (meta_key, post_id);
    
  • 失控的WP Cron:有些插件的定时任务会批量跑全站点查询(比如全量索引、数据同步),用WP-CLI执行wp cron event list看看有没有高频执行的可疑任务,先临时禁用试试。
  • 缓存失效:如果WP缓存(比如WP Rocket、W3 Total Cache)没配置好,缓存过期太频繁,会导致MySQL反复处理相同请求。检查缓存规则,确保静态页、归档页都被正确缓存,尽量减少动态查询。
第三步:给MySQL配置“松绑”

你的服务器有128G内存,但当前MySQL实际只用了7.6G左右(68.666g是虚拟内存,实际驻留内存是7.596G),完全可以调整配置榨出性能:

  • 编辑Debian 8的MySQL配置文件(一般是/etc/mysql/mysql.conf.d/mysqld.cnf),调整这些关键参数:
    [mysqld]
    innodb_buffer_pool_size = 64G  # 给InnoDB缓冲池分配一半内存,足够装下你的核心数据
    innodb_log_file_size = 4G      # 增大日志文件,减少频繁刷盘的开销
    innodb_flush_log_at_trx_commit = 2  # 性能优先,牺牲一点事务安全性(非金融站点完全可用)
    query_cache_type = 0           # 关闭查询缓存,WP动态查询多,缓存反而拖慢速度
    query_cache_size = 0
    max_connections = 500          # 调大连接数,避免并发请求排队
    table_open_cache = 2048        # 增大表缓存,减少反复打开表的开销
    
    改完重启MySQL:systemctl restart mysql
第四步:系统层面的辅助排查

虽然硬件很强,但也得排除系统瓶颈:

  • 用iostat -x 1 5看磁盘IO,你的NVMe盘性能够强,但如果MySQL频繁刷盘也会拖CPU(不过你top里的wa是0%,暂时可以排除)。
  • 检查Apache的并发设置,比如MaxRequestWorkers,如果Apache开了太多进程,会导致MySQL连接数暴增。可以配合Nginx做反向代理,让Nginx处理静态请求,减轻Apache和MySQL的压力。
临时应急方案

如果CPU占用已经影响站点访问,先做这些救急:

  • 用mysqladmin processlist -u root -p | grep -v Sleep找出正在运行的长查询,用KILL [进程ID];杀掉最耗资源的那些。
  • 临时开启WP维护模式,给你留足够时间排查问题。

内容的提问来源于stack exchange,提问作者Martin Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:16:57