温馨提示×

为什么centos apache很慢

小樊
43
2026-09-06 02:36:31
栏目: 智能运维

CentOS 上 Apache 很慢,通常不是“CentOS 本身慢”,而是配置、资源、网络或应用层的问题。下面按最常见原因 → 排查方法 → 解决建议来说明。


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

1. Apache 配置不合理(最常见)

典型问题:

  • prefork 模式下 MaxClients 太小
  • KeepAlive 设置不当
  • 开了大量不必要模块

检查:

httpd -V

看 MPM 类型(prefork / worker / event)

建议(prefork 示例):

<IfModule mpm_prefork_module>
    StartServers        5
    MinSpareServers     5
    MaxSpareServers     10
    MaxClients          150
    MaxRequestsPerChild 2000
</IfModule>

2. PHP / 后端程序慢(非常常见)

如果是 PHP 网站:

  • PHP 执行慢
  • 数据库查询慢
  • 外部 API 调用阻塞

排查:

top

%CPU%MEM 是否被 php-fpm / httpd 占满

建议:

  • 开启 PHP OPcache
  • 慢日志:
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 2s

3. DNS 解析卡住(经典坑)

Apache 启动或访问时做反向 DNS:

HostnameLookups On

会导致严重延迟

✅ 改成:

HostnameLookups Off

4. SELinux 干扰(CentOS 特有)

SELinux 可能导致:

  • 文件访问慢
  • 权限等待

检查:

getenforce

临时测试:

setenforce 0

如果变快了,说明是 SELinux 策略问题。


5. 防火墙 / iptables 问题

  • 规则太复杂
  • conntrack 表满

检查:

iptables -L -n
dmesg | grep conntrack

6. 磁盘 IO 瓶颈

日志写入、数据库 IO 高

检查:

iostat -x 1

如果 %util 接近 100%,说明磁盘瓶颈。


7. Apache 日志太大

  • access_log 几 GB
  • 没做日志轮转
du -sh /var/log/httpd

✅ 开启 logrotate


二、快速排查清单(5 分钟定位)

# 1. 看负载
top

# 2. 看连接数
netstat -an | grep :80 | wc -l

# 3. 看 Apache 状态
apachectl status

# 4. 看错误日志
tail -f /var/log/httpd/error_log

# 5. 看 PHP 慢日志(如有)
tail -f /var/log/php-fpm/slow.log

三、如果你愿意,我可以更精准帮你

你可以补充:

  1. CentOS 版本(6 / 7 / 8 / Stream)
  2. Apache 版本
  3. 是否 PHP / MySQL
  4. 首页慢还是所有页面慢
  5. 本地访问慢还是外网慢

我可以直接给你针对性优化配置

0