温馨提示×

centos apache2怎么调优

小樊
39
2026-09-24 06:00:14
栏目: 智能运维

在 CentOS 上(注意:CentOS 默认是 httpd,不是 apache2,apache2 是 Debian/Ubuntu 的叫法),Apache 调优一般从 配置参数、系统内核、模块、缓存、PHP/动态语言 几个方面入手。下面给你一套实用调优清单。


一、确认 Apache 版本与 MPM 模式

httpd -v
httpd -M | grep mpm

常见 MPM:

  • prefork(稳定,内存占用高,兼容老 PHP)
  • worker(线程,内存小)
  • event(推荐,高并发最好)

✅ 推荐:event(CentOS 7+ 默认)

切换 MPM(如有必要):

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

启用:

LoadModule mpm_event_module modules/mod_mpm_event.so

二、核心 httpd.conf 调优(最重要)

1️⃣ KeepAlive 优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

太长会占用连接,太短会增加 TCP 开销


2️⃣ MPM event 推荐配置

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild 10000
</IfModule>

说明:

  • MaxRequestWorkers ≈ 并发上限
  • MaxConnectionsPerChild 防止内存泄漏

3️⃣ 关闭不必要的模块

httpd -M

常见可关:

  • mod_userdir
  • mod_status(生产可关)
  • mod_auth_dbm

删除或注释:

vim /etc/httpd/conf.modules.d/*.conf

三、系统层调优(非常关键)

1️⃣ 文件描述符

ulimit -n

建议:

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

2️⃣ 内核参数(高并发必改)

vim /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 1024 65535

生效:

sysctl -p

四、开启缓存与压缩

1️⃣ 开启 gzip

vim /etc/httpd/conf.d/deflate.conf
AddOutputFilterByType DEFLATE text/html text/css application/javascript

2️⃣ 浏览器缓存

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 30 days"
    ExpiresByType text/css "access plus 7 days"
</IfModule>

五、PHP / 动态内容优化(如有)

  • 使用 PHP-FPM(不要用 mod_php)
  • 配置:
pm = dynamic
pm.max_children = 100
pm.start_servers = 20

六、日志优化

减少 IO:

CustomLog logs/access_log combined
# 或关闭不需要的日志

七、压测验证

ab -n 10000 -c 500 http://localhost/

八、推荐生产配置总结

✅ event MPM
✅ KeepAlive 5s
✅ 文件句柄 65535
✅ gzip + 缓存
✅ PHP-FPM
✅ 关无用模块


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

  • CentOS 版本
  • Apache 版本
  • 是否 PHP / Java / 静态站
  • 并发量级别(几百 / 几千 / 上万)

我可以给你一套精确配置。

0 踩