温馨提示×

centos apache2怎么优化

小樊
43
2026-09-15 02:08:59
栏目: 智能运维

在 CentOS 上优化 Apache(httpd),可以从系统层面、Apache 配置、模块、缓存、安全与监控几个方面来做。下面是一套比较实用、偏生产环境的优化思路(以 CentOS 7/8 + Apache 2.4 为例)。


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

1. 关闭或调整 SELinux(按需)

getenforce
# 如果是 Enforcing,生产环境建议保持,但需正确配置策略
# 调试时可临时关闭
setenforce 0

2. 文件描述符限制

ulimit -n

修改 /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

3. 内核参数(高并发)

编辑 /etc/sysctl.conf

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

二、Apache 核心配置优化(最重要)

1. MPM 模式选择(非常关键)

Apache 2.4 常见 MPM:

  • prefork(兼容老 PHP)
  • worker
  • event(推荐,高并发)

查看当前 MPM:

httpd -V | grep MPM

推荐:event + PHP-FPM

yum install mod_http2 php-fpm

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

LoadModule mpm_event_module modules/mod_mpm_event.so

2. MPM event 优化示例

/etc/httpd/conf.d/mpm.conf

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

MaxRequestWorkers 一般 ≈ 内存 / 每进程内存


3. KeepAlive 优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

三、PHP 优化(如果用 PHP)

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

systemctl enable php-fpm
systemctl start php-fpm

Apache 配置:

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

2. PHP-FPM 进程池

/etc/php-fpm.d/www.conf

pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

四、静态资源 & 缓存优化

1. 启用压缩

LoadModule deflate_module modules/mod_deflate.so

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

2. 浏览器缓存

<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>

五、安全 & 稳定性

1. 关闭无用模块

httpd -M

注释掉不需要的 LoadModule

2. 隐藏版本信息

ServerTokens Prod
ServerSignature Off

六、日志与监控

1. 减少日志 IO

CustomLog logs/access_log combined env=!dontlog

2. 监控工具

  • mod_status
<Location /server-status>
    SetHandler server-status
    Require ip 127.0.0.1
</Location>

七、压测验证

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

八、常见瓶颈总结

问题 解决
CPU 高 换 event + PHP-FPM
内存爆 降低 MaxRequestWorkers
并发上不去 调整内核 + MPM
响应慢 开缓存 + 压缩

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

  • CentOS 版本
  • Apache 版本
  • 是否用 PHP / 什么业务(API / 网站 / 下载)

我可以给你一套针对性配置模板。

0 踩