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

CentOS7/Plesk环境下Apache报错AH01068及MySQL高CPU占用求助

排查方案

1. 定位MySQL高CPU的具体线程

  • 登录MySQL执行SHOW FULL PROCESSLIST;,重点关注Running状态且耗时久的线程,记录对应的Id和完整的Info(执行的SQL语句)。
  • 用top -H -p <mysql进程ID>查看MySQL的线程级CPU占用,找到高CPU的线程ID后,用printf "%x\n" <线程ID>转成十六进制,再通过SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE THREAD_ID = <十六进制值>匹配到对应的SQL。

2. 分析异常SQL

  • 对拿到的耗时SQL执行EXPLAIN <目标SQL语句>,查看执行计划:
    • 若type字段为ALL,说明存在全表扫描,需检查对应表是否缺少合适索引;
    • 若key字段为空,确认是否有可利用的索引未被触发。
  • 排查数据量变化:即使代码未修改,也可能是某张表数据量激增、缓存失效(如Redis/Memcached缓存过期)导致大量请求直接命中MySQL。

3. 排查Apache AH01068错误

  • 查看Apache错误日志(通常路径/var/log/httpd/error_log或Plesk面板内的网站日志),找到该错误的完整上下文,包括请求URL、客户端IP、请求头内容。该错误多由请求头格式异常、请求体过大引发。
  • 检查Nginx反向代理配置:确认Host、X-Forwarded-For等请求头是否正确转发,client_max_body_size等请求体限制参数是否合理。

4. 检查Plesk环境配置

  • 查看PHP-FPM配置:核对pm.max_children、pm.start_servers等进程参数,确保与服务器内存资源匹配,避免FPM进程过多加剧资源消耗。
  • 利用Plesk监控工具,检查服务器内存、磁盘IO、网络流量是否存在异常(如磁盘IO过高会拖慢MySQL查询速度)。

5. 排查外部因素

  • 分析Nginx访问日志(/var/log/nginx/access_log),看是否存在异常IP的高频请求(爬虫或恶意攻击),这类请求可能触发重复SQL查询导致MySQL负载飙升,可通过Plesk防火墙限制异常IP。
  • 检查CentOS7内核参数:如net.core.somaxconn、vm.swappiness等是否合理,不合理的内核参数可能影响Apache/MySQL的性能表现。

6. 临时验证与持续监控

  • 若找到异常SQL,可先执行KILL <线程ID>终止线程,观察问题是否复发;必要时临时添加索引或调整SQL逻辑。
  • 开启MySQL慢查询日志:设置slow_query_log = 1、long_query_time = 2(记录超过2秒的查询),日志路径一般为/var/log/mysql/slow.log,持续分析慢查询定位长期问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:45:05