温馨提示×

为何ubuntu apache2宕机

小樊
44
2026-09-11 04:41:45
栏目: 智能运维

Ubuntu 上 Apache2 宕机(停止响应 / 进程退出 / 无法访问) 是很常见的问题,原因通常集中在资源、配置、权限、依赖服务这几类。下面按「最常见 → 较少见」给你系统梳理,并告诉你怎么快速定位。


一、最常见原因(80% 情况)

1️⃣ 内存不足(OOM)

症状

  • 网站突然打不开
  • systemctl status apache2 显示 failed 或 killed
  • /var/log/syslog 中有:
    Out of memory: Killed process (apache2)
    

原因

  • 服务器内存太小(如 512MB / 1GB)
  • MaxClients / MaxRequestWorkers 设置过大
  • 有 PHP / Python 程序内存泄漏

✅ 解决:

free -h
dmesg | grep -i oom

调整:

<IfModule mpm_prefork_module>
    MaxRequestWorkers 50
    MaxConnectionsPerChild 100
</IfModule>

2️⃣ 配置错误导致启动失败

症状

  • systemctl restart apache2 失败
  • 页面直接 502 / 503 / 连接被拒绝

常见错误

  • 端口冲突(80 / 443)
  • 虚拟主机配置语法错误
  • SSL 证书路径错误

✅ 排查:

sudo apache2ctl configtest
journalctl -xeu apache2

3️⃣ 端口被占用

常见冲突

  • nginx 也在跑
  • 另一个 apache 实例
  • docker 容器占用了 80

✅ 检查:

sudo netstat -tulnp | grep :80
sudo lsof -i :80

4️⃣ PHP / 后端进程卡死

症状

  • Apache 在,但页面一直转圈
  • 最终 timeout

原因

  • PHP 死循环
  • 数据库连接耗尽
  • 外部 API 超时

✅ 查看:

ps aux | grep apache2
tail -f /var/log/apache2/error.log

二、系统 / 服务原因

5️⃣ systemd 服务异常

systemctl status apache2
journalctl -u apache2 --no-pager

可能原因:

  • 被 systemctl stop 后未启动
  • 开机未 enable

✅ 修复:

sudo systemctl enable apache2
sudo systemctl restart apache2

6️⃣ 磁盘满了

症状

  • 日志写不进去
  • Apache 直接挂

✅ 检查:

df -h
du -sh /var/log/*

7️⃣ inode 耗尽(小文件太多)

df -i

三、权限 / 安全原因

8️⃣ 文件权限错误

  • /var/www 不可读
  • www-data 无权限

✅ 修复示例:

sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www

9️⃣ SELinux / AppArmor(Ubuntu 多为 AppArmor)

sudo aa-status

四、被攻击(DDoS / 爬虫)

  • 大量请求
  • SYN 攻击
  • 恶意爬虫

✅ 临时缓解:

Timeout 30
KeepAliveTimeout 5

五、快速定位流程(建议照做)

# 1. 服务状态
systemctl status apache2

# 2. 错误日志
tail -n 100 /var/log/apache2/error.log

# 3. 系统日志
journalctl -u apache2

# 4. 资源
free -h
df -h
top

六、如果你愿意,我可以进一步帮你

你可以直接发我:

  1. systemctl status apache2 输出
  2. /var/log/apache2/error.log 最后 30 行
  3. 服务器配置(内存 / Ubuntu 版本)

我可以直接帮你判断是哪种宕机原因并给具体修复命令。

0 踩