温馨提示×

centos apache为何宕机

小樊
47
2026-09-11 21:19:11
栏目: 智能运维

CentOS 上 Apache(httpd)宕机(停止响应 / 进程退出)的原因很多,下面按常见程度排查思路给你一个系统性的说明。


一、最常见原因

1. 内存不足(OOM Killer)

现象

  • Apache 突然消失
  • 系统变慢
  • 日志里看不到 Apache 报错

排查

dmesg | grep -i kill

grep -i oom /var/log/messages

常见原因

  • MaxClients / MaxRequestWorkers 设置过大
  • 同时运行 MySQL、PHP、Java 等
  • SWAP 未配置

2. Apache 配置错误

现象

  • 重启失败
  • 修改配置后宕机

排查

httpd -t
# 或
apachectl configtest

3. 进程数耗尽(Too many connections)

现象

  • 能 ping 通服务器
  • 网页打不开
  • 日志中有:
server reached MaxRequestWorkers setting

查看

httpd -V | grep MPM

(常见为 prefork / worker / event)

解决

  • 调整 MaxRequestWorkers
  • 优化 PHP(如减少内存占用)

4. 磁盘空间满

现象

  • Apache 突然停
  • 无法写日志

检查

df -h

重点目录

  • /var/log
  • /tmp
  • /var/www

5. inode 耗尽

现象

  • 磁盘空间有,但无法写文件

检查

df -i

二、服务层面的原因

6. systemd 限制

现象

  • 服务被 systemd 杀掉
  • 日志中:
code=killed, status=9

查看

journalctl -u httpd

可能原因

  • 内存限制
  • CPU 限制

7. Apache 被 watchdog / 脚本误杀

  • 自己写的监控脚本
  • 第三方面板(cPanel / 宝塔等)

三、应用层原因(非常常见)

8. PHP / 网站代码问题

  • 死循环
  • 内存泄漏
  • 连接数据库不释放

表现

  • Apache 子进程越来越多
  • 最后 OOM

9. 被攻击

  • CC 攻击
  • 爬虫暴力访问
  • Slowloris 攻击

排查

netstat -an | grep :80 | wc -l

四、快速排查清单(建议顺序)

# 1. 服务状态
systemctl status httpd

# 2. 错误日志
tail -n 100 /var/log/httpd/error_log

# 3. 系统日志
journalctl -u httpd

# 4. 内存
free -h
dmesg | grep -i oom

# 5. 磁盘
df -h
df -i

# 6. 配置
httpd -t

五、如果你愿意,我可以更精准判断

你可以补充:

  1. CentOS 版本(6 / 7 / 8 / Stream)
  2. Apache 版本
  3. 宕机时的 error_log 最后 20 行
  4. 是“进程没了”还是“网页打不开但进程在”

我可以直接帮你定位是哪一类问题。

0