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

WooCommerce站点MariaDB CPU占用过高问题排查求助

WooCommerce百万产品站点CPU占用异常排查问题

站点基本信息

  • 运营WooCommerce站点,包含约100万个simple类型产品(疑问:该数量对WooCommerce是否过多?)
  • 服务器配置:16核CPU、62GB内存,代码与数据库部署在同一服务器
  • MariaDB版本:10.5.23-MariaDB(debian-linux-gnu x86_64)

CPU占用异常表现

服务器CPU时常被占满,导致站点无法响应,通过htop工具观察到MariaDB占用全部CPU资源。

AmazonBot访问与Woo API疑问

站点已配置Cloudflare,访问日志显示AmazonBot频繁访问/wp-json/wp/v2/product/ID-HERE类端点,示例日志:

162.158.87.126 - - [03/Feb/2024:15:52:35 +0100] "GET /wp-json/wp/v2/product_tag/766 HTTP/2.0" 504 164 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)" "3.224.220.101,3.224.220.101"

疑问:

  1. 这类访问是否会导致CPU占用过高?
  2. 由于未使用Woo API,是否应该直接禁用?

慢查询情况

执行SHOW PROCESSLIST命令发现以下两类查询已挂起超过2000秒:

第一类慢查询

SELECT
    post_modified_gmt 
FROM
    wp_posts 
WHERE
    post_status = 'publish' 
    AND post_type IN ( 'post', 'page', 'attachment', 'e-landing-page', 'elementor_library', 'product' ) 
ORDER BY
    post_modified_gmt DESC 
    LIMIT 1

第二类慢查询

SELECT
    wp_posts.ID 
FROM
    wp_posts
    LEFT JOIN wp_term_relationships ON ( wp_posts.ID = wp_term_relationships.object_id ) 
WHERE
    1 = 1 
    AND ( wp_term_relationships.term_taxonomy_id IN ( 2, 3, 4, 5 ) ) 
    AND wp_posts.post_type = 'product' 
    AND ((
            wp_posts.post_status = 'publish' 
        )) 
GROUP BY
    wp_posts.ID 
ORDER BY
    wp_posts.post_date DESC 
    LIMIT 0,
    1

数据库表索引情况

  • wp_posts:wp_posts索引
  • wp_postmeta:wp_postmeta索引
  • wp_term_relationships:wp_term_relationships索引

补充排查信息

数据库与系统统计数据

  1. SELECT COUNT(*) FROM information_schema.tables;查询结果:
+----------+
| COUNT(*) |
+----------+
|      602 |
+----------+
1 row in set (0.004 sec)
  1. SHOW GLOBAL STATUS全局状态统计
  2. STATUS会话状态信息
  3. SHOW ENGINE INNODB STATUSInnoDB引擎状态
  4. top -b -n 1系统进程统计
  5. top -b -n 1 -H线程级进程统计
  6. ulimit -a系统资源限制配置
  7. iostat -xm 5 3磁盘IO统计数据
  8. df -h磁盘空间使用情况
  9. df -iinode使用情况
  10. free -h内存使用情况
  11. cat /proc/meminfo内存详细信息
  12. lsb_release -a操作系统版本信息
  13. SHOW GLOBAL VARIABLES数据库全局变量配置
  14. lsblk磁盘分区信息
  15. SELECT COUNT(*), sum(data_length), sum(index_length), sum(data_free) FROM information_schema.tables LIMIT 100000;数据库表空间统计
  16. 存储介质为SSD
  17. wp-config.php配置内容
  18. findfragtables.sql输出的表碎片信息

注:收集以上信息期间,CPU使用率未超过80%,平均负载约为60%。

额外疑问

向wp_posts和wp_postmeta表执行INSERT操作时,插入操作瞬间完成,但之后CPU使用率会飙升至100%,怀疑是MySQL在后台执行重建索引操作导致?


内容的提问来源于stack exchange,提问作者Umair Ayub

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:59:52