温馨提示×

centos上apache2如何优化

小樊
41
2026-09-18 03:13:22
栏目: 智能运维

在 CentOS 上,一般使用的是 Apache HTTP Server(httpd),而不是 Debian/Ubuntu 中的 apache2 包名。下面从 系统层面 + Apache 配置层面 给你一套实用的优化方案。


一、基础环境确认

httpd -v
# 或
apachectl -v

CentOS 常见版本:

  • CentOS 7:httpd 2.4
  • CentOS 8 / Stream:httpd 2.4(模块方式略有不同)

二、Apache 运行模式选择(非常重要)

1️⃣ 推荐使用 event MPM(高并发)

httpd -M | grep mpm

如果不是 event:

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

改为:

LoadModule mpm_event_module modules/mod_mpm_event.so

⚠️ event 不支持 mod_php,PHP 要用 PHP-FPM


三、MPM 参数优化(核心)

event MPM 示例(/etc/httpd/conf.d/mpm.conf)

<IfModule mpm_event_module>
    ServerLimit             16
    StartServers           4
    MinSpareThreads        64
    MaxSpareThreads        128
    ThreadsPerChild        64
    MaxRequestWorkers      1024
    MaxConnectionsPerChild 10000
</IfModule>

说明

  • MaxRequestWorkers ≈ 并发连接数
  • ThreadsPerChild × ServerLimit = MaxRequestWorkers
  • MaxConnectionsPerChild 防止内存泄漏

四、KeepAlive 优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

太大 → 占用连接
太小 → 频繁握手


五、关闭不需要的模块(减少内存)

httpd -M

常见可禁用:

# 注释掉
# LoadModule status_module
# LoadModule autoindex_module
# LoadModule userdir_module

六、开启压缩(必须)

启用 mod_deflate

LoadModule deflate_module modules/mod_deflate.so

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

七、开启缓存(静态资源)

mod_expires

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>

八、PHP 优化(强烈建议 PHP-FPM)

安装 PHP-FPM

yum install php-fpm

Apache 使用 proxy_fcgi

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

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

九、系统层面优化

1️⃣ 文件描述符

ulimit -n 65535

/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

十、日志优化(高并发必做)

CustomLog logs/access_log combined env=!dontlog
SetEnvIf Request_URI "\.(css|js|png)$" dontlog

或关闭详细日志(测试环境)


十一、常用性能检测工具

apachectl configtest
top
htop
ss -ant | wc -l
ab -n 1000 -c 100 http://localhost/

十二、推荐最终组合(生产环境)

✅ CentOS + Apache(event)
✅ PHP-FPM
✅ deflate + expires
✅ 关闭无用模块
✅ 系统参数调优


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

  • CentOS 版本
  • Apache 版本
  • 是否用 PHP / Java / 反向代理
  • 并发量级别

我可以给你 定制化优化配置。

0 踩