温馨提示×

apache在centos如何调优

小樊
46
2026-08-30 00:49:54
栏目: 智能运维

下面从 CentOS 上 Apache (httpd) 的性能调优 角度,系统性地给你整理一套常见、实用的优化方案,适合 生产环境。内容按 由易到难、由系统到应用 排序。


一、系统层面基础优化(先做好)

1️⃣ 系统资源限制

编辑:

vi /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

查看:

ulimit -n

2️⃣ 禁用 SELinux(或设 permissive)

getenforce
setenforce 0

永久关闭:

vi /etc/selinux/config
SELINUX=disabled

3️⃣ 关闭不必要的服务

systemctl disable firewalld --now
systemctl disable cups --now

二、Apache 工作模式选择与调优(核心)

查看当前 MPM

httpd -V | grep MPM

CentOS 7/8 默认一般是:

  • prefork(老、稳定)
  • event(推荐,高性能)

✅ 推荐:使用 event MPM(首选)

修改配置文件

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

启用:

LoadModule mpm_event_module modules/mod_mpm_event.so

并注释掉:

#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

event MPM 调优参数

vi /etc/httpd/conf/httpd.conf
<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild        64
    MaxRequestWorkers      800
    MaxConnectionsPerChild 10000
</IfModule>

✅ 说明:

  • MaxRequestWorkers ≈ 并发连接数上限
  • ThreadsPerChild 不宜过大(32–75)
  • MaxConnectionsPerChild 防止内存泄漏

三、KeepAlive 调优(非常重要)

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

✅ 建议:

  • 高并发 → KeepAliveTimeout 2–5 秒
  • 静态资源多 → 可适当提高

四、模块优化(减少内存)

禁用无用模块

常见可关闭:

# 注释掉
LoadModule autoindex_module
LoadModule userdir_module
LoadModule negotiation_module

五、静态资源与缓存优化

1️⃣ 启用压缩(gzip)

LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

2️⃣ 浏览器缓存

LoadModule expires_module modules/mod_expires.so
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 30 days"
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
</IfModule>

六、日志优化(减少 IO)

关闭不必要日志

CustomLog logs/access_log combined
# 或
# CustomLog off

减少日志级别:

LogLevel warn

七、PHP 场景优化(如搭配 PHP)

✅ 推荐:PHP-FPM(不要 mod_php)

yum install php-fpm
systemctl enable php-fpm

Apache 配置:

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

八、反向代理 / 高并发建议

1️⃣ 前端加 Nginx(最佳实践)

Nginx → Apache → PHP

✅ Nginx 处理静态 + 高并发
✅ Apache 只处理动态


2️⃣ 使用 mod_reqtimeout

RequestReadTimeout header=10-20,MinRate=500

九、监控与压测

查看当前连接

ss -ant | grep :80 | wc -l

压测

yum install httpd-tools
ab -n 10000 -c 500 http://localhost/

十、推荐生产配置模板(event)

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild        64
    MaxRequestWorkers      800
    MaxConnectionsPerChild 10000
</IfModule>

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

总结一句话

CentOS 上 Apache 调优 = 选用 event MPM + 合理 MaxRequestWorkers + 控制 KeepAlive + 关模块 + 日志优化 + 必要时用 Nginx 前置


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

  • ✅ CentOS 版本
  • ✅ Apache 版本
  • ✅ 是否跑 PHP / Java
  • ✅ 并发量大概多少

我可以 直接给你一套针对你业务的完整配置

0