温馨提示×

centos怎样解决apache慢

小樊
41
2026-10-03 00:44:24
栏目: 智能运维

在 CentOS 上解决 Apache 访问慢 / 响应慢 的问题,通常要从 系统资源、Apache 配置、PHP/数据库、网络 几个方面入手。下面给你一套实用排查与优化思路(从快到慢、从常见到深入)。


一、先确认“慢”在哪里(非常重要)

1. 看是 Apache 慢,还是后端慢

time curl -I http://localhost/
  • 如果本地都慢 → Apache 或后端问题
  • 如果本地快、外部慢 → 网络 / DNS / 防火墙问题

2. 查看系统资源

top
free -h
df -h
iostat -x 1

重点看:

  • CPU 是否 100%
  • 内存是否不够(开始用 swap)
  • 磁盘 IO 是否很高

二、Apache 自身常见优化(CentOS 必做)

1. 选择合适的 MPM(关键)

查看当前 MPM:

httpd -V | grep MPM

推荐配置(CentOS 7/8)

编辑:

/etc/httpd/conf.modules.d/00-mpm.conf

✅ 内存小(<2G)用 prefork

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
<IfModule mpm_prefork_module>
    StartServers        5
    MinSpareServers     5
    MaxSpareServers     10
    MaxRequestWorkers   150
    MaxConnectionsPerChild 3000
</IfModule>

✅ 高并发用 event(推荐)

LoadModule mpm_event_module modules/mod_mpm_event.so
<IfModule mpm_event_module>
    StartServers        2
    MinSpareThreads     25
    MaxSpareThreads     75
    ThreadsPerChild     25
    MaxRequestWorkers   400
    MaxConnectionsPerChild 10000
</IfModule>

修改后:

systemctl restart httpd

2. 关闭不必要模块

httpd -M

禁用不用的模块(如 status, proxy 不用就关)


3. 开启 KeepAlive(但别太长)

/etc/httpd/conf/httpd.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

三、PHP / 动态页面慢(非常常见)

1. 用 PHP-FPM(强烈推荐)

CentOS 上 Apache + mod_php 很容易慢。

安装:

yum install php-fpm

Apache 使用:

yum install mod_proxy_fcgi

配置示例:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

重启:

systemctl restart php-fpm httpd

2. 检查慢日志(找真凶)

/etc/php-fpm.d/www.conf
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 2s
tail -f /var/log/php-fpm/slow.log

四、数据库导致 Apache 慢(MySQL/MariaDB)

1. 查看慢查询

/etc/my.cnf
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1

2. 常见原因

  • 没加索引
  • 一次查几万条数据
  • 数据库连接数爆了

五、CentOS 系统级优化

1. 文件描述符限制

ulimit -n

修改:

/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

2. 内核参数优化

/etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
sysctl -p

六、其他常见“坑”

1. DNS 反向解析导致慢

HostnameLookups Off

2. SELinux 影响(可临时测试)

setenforce 0

3. 防火墙 / 安全组

  • 云服务器安全组
  • firewalld 规则过多

七、快速排查清单(照着做)

✅ top / free / iostat
✅ httpd -V 看 MPM
✅ 开 PHP-FPM
✅ 看 php slow log
✅ 看 mysql slow log
✅ KeepAlive 设置
✅ 关 HostnameLookups


如果你愿意,可以把下面信息发我,我可以直接帮你给一套精准配置:

  • CentOS 版本
  • Apache 版本
  • 是否用 PHP / 什么程序(WordPress?自建?)
  • 内存 & CPU 配置
  • 慢的具体表现(首页?接口?上传?)

0 踩