温馨提示×

为什么ubuntu apache2卡顿

小樊
48
2026-10-02 06:16:43
栏目: 智能运维

Ubuntu 上 Apache2 卡顿 的原因通常可以归为几大类:资源不足、配置不当、模块问题、或外部依赖慢。下面按常见程度给你一个排查清单。


一、服务器资源不足(最常见)

1. CPU / 内存不够

top
htop
free -h
  • 内存满 → Apache 频繁 swap → 卡
  • CPU 100% → 并发请求处理不过来

✅ 解决:

  • 减少 MaxClients / MaxRequestWorkers
  • 升级配置或换轻量服务(nginx)

二、Apache 配置不合理

2. 并发连接数过高

查看:

apache2ctl -M | grep mpm

常见模式:

  • mpm_prefork(默认,最吃内存)
  • mpm_event(推荐)

编辑:

/etc/apache2/mods-enabled/mpm_prefork.conf

示例(小服务器):

<IfModule mpm_prefork_module>
    StartServers        2
    MinSpareServers     2
    MaxSpareServers     5
    MaxRequestWorkers   50
    MaxConnectionsPerChild 1000
</IfModule>

✅ 建议:

  • 小内存机器用 mpm_event + php-fpm

三、PHP 或后端慢

3. PHP 执行慢

tail -f /var/log/apache2/error.log

常见原因:

  • 数据库慢查询
  • 外部 API 超时
  • 死循环 / 内存泄漏

✅ 优化:

  • 使用 php-fpm
  • 开启 OPcache
  • 检查慢日志

四、磁盘 / IO 问题

4. 磁盘 IO 瓶颈

iostat -x 1
  • 高 %util
  • 云服务器带宽限制

✅ 解决:

  • 减少日志写入
  • 使用 SSD
  • 静态资源走 CDN

五、日志或模块问题

5. 日志过大 / 没轮转

du -sh /var/log/apache2

✅ 解决:

logrotate --force /etc/logrotate.d/apache2

6. 不必要的模块

apache2ctl -M

禁用:

a2dismod status
a2dismod autoindex

六、网络 / 攻击问题

7. 被爬虫或 CC 攻击

netstat -ant | wc -l

✅ 解决:

  • 限速
  • 防火墙
  • fail2ban

七、系统层面

  • Ubuntu 版本过旧
  • Apache 版本 Bug
  • 内核参数未优化(ulimit, tcp)

快速自检命令(建议你先跑)

free -h
top
apache2ctl -S
tail -n 50 /var/log/apache2/error.log

如果你愿意,可以告诉我:

  1. Ubuntu 版本
  2. Apache + PHP 还是静态
  3. 卡是 打开网页慢 还是 服务器整体卡
  4. 服务器配置(CPU / 内存)

我可以帮你精准定位并给一份配置文件示例。

0 踩