温馨提示×

centos下apache2如何优化

小樊
52
2026-08-18 21:50:01
栏目: 智能运维

CentOS 下优化 Apache HTTP Server(httpd),通常围绕性能、并发、内存占用、安全等方面进行。下面按实用维度给你一套可落地的优化方案(适用于 Apache 2.4,CentOS 7/8/Stream)。


一、选择正确的 MPM(最重要)

1️⃣ 查看当前 MPM

httpd -V | grep MPM

常见 MPM:

  • prefork(老、稳定,但内存占用高)
  • worker(线程 + 进程)
  • event(推荐,PHP 用 php-fpm 时最佳)

2️⃣ 推荐配置

场景 推荐
PHP + Apache event + php-fpm
纯静态 event
老业务 prefork

3️⃣ 启用 event + php-fpm(推荐)

yum install php-fpm -y
systemctl enable php-fpm
systemctl start php-fpm

禁用 prefork:

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

只保留:

LoadModule mpm_event_module modules/mod_mpm_event.so

二、MPM 参数优化(核心)

编辑:

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

event MPM 示例(2G~4G 内存)

<IfModule mpm_event_module>
    ServerLimit             16
    StartServers             2
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   1000
</IfModule>

参数说明

参数 含义
MaxRequestWorkers 最大并发
ThreadsPerChild 每个进程线程数
MaxConnectionsPerChild 防止内存泄漏

经验值
MaxRequestWorkers ≈ 可用内存 / 每个进程内存


三、关闭不必要的模块(省内存)

查看已加载模块:

httpd -M

禁用不常用模块(示例):

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

注释掉:

# mod_ldap
# mod_authnz_ldap
# mod_dav
# mod_cgi

四、KeepAlive 优化(连接复用)

vi /etc/httpd/conf/httpd.conf
KeepAlive On
KeepAliveTimeout 3
MaxKeepAliveRequests 100

生产环境建议 2~5 秒


五、静态资源缓存(非常大提升)

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

六、开启 Gzip 压缩

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript
</IfModule>

七、文件描述符 & 系统级优化

1️⃣ 增加文件句柄

ulimit -n 65535

永久生效:

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

2️⃣ 内核参数

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

八、PHP 优化(如果用 PHP)

php-fpm 池配置

vi /etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

九、日志优化(减少 IO)

CustomLog logs/access_log combined env=!dontlog

或关闭不需要的日志:

# CustomLog logs/access_log combined

十、压测验证

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

十一、推荐最终组合(生产)

CentOS + Apache 2.4 + event MPM + php-fpm
✅ 关闭无用模块
✅ 开启缓存 + gzip
✅ 系统级参数调优


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

  • ✅ CentOS 版本
  • ✅ Apache 版本
  • ✅ 内存大小
  • ✅ 是否跑 PHP / Java / 静态站

我可以给你一套完全定制的配置

0