温馨提示×

centos apache2怎么优化性能

小樊
34
2026-10-03 00:52:22
栏目: 智能运维

在 CentOS 上优化 Apache(httpd) 性能,通常从 配置调优、系统参数、模块管理、缓存与压缩、前后端架构 几个方面入手。下面给你一套实用、可落地的优化方案(以 CentOS 7/8 + Apache 2.4 为例)。


一、选择合适的工作模式(MPM)

Apache 有 3 种 MPM:

  • prefork(稳定,内存占用高,不支持高并发)
  • worker(线程+进程,适合一般并发)
  • event(推荐,高并发性能最好)

查看当前 MPM

httpd -V | grep -i mpm

启用 event MPM(推荐)

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

确保如下内容启用(其他注释掉):

LoadModule mpm_event_module modules/mod_mpm_event.so

重启:

systemctl restart httpd

二、优化 MPM 参数(核心)

编辑配置文件(如不存在可新建):

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

event MPM 示例(4 核 8G 服务器)

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         64
    MaxSpareThreads        128
    ThreadsPerChild         64
    MaxRequestWorkers      512
    MaxConnectionsPerChild 10000
</IfModule>

参数说明:

  • MaxRequestWorkers:最大并发连接数(核心)
  • ThreadsPerChild:每个进程线程数
  • MaxConnectionsPerChild:防止内存泄漏

三、关闭不必要的模块

减少内存和攻击面:

httpd -M

常见可禁用模块(视业务而定):

#LoadModule rewrite_module
#LoadModule autoindex_module
#LoadModule status_module

编辑:

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

四、开启 KeepAlive(重要)

vim /etc/httpd/conf/httpd.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

KeepAliveTimeout 不建议太大(2–5 秒最佳)


五、启用压缩(节省带宽)

vim /etc/httpd/conf.d/deflate.conf
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript
</IfModule>

六、启用浏览器缓存

vim /etc/httpd/conf.d/expires.conf
<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>

七、系统层面优化(Linux)

1. 文件描述符限制

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

生效:

sysctl -p

八、使用缓存 / 反向代理(进阶)

方案 1:Apache + PHP-FPM(推荐)

比 mod_php 更快更稳

yum install php-fpm

Apache 配置:

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

方案 2:前端加 Nginx

Nginx(静态+反向代理) → Apache(动态)

九、开启 Apache 状态监控(可选)

vim /etc/httpd/conf.d/status.conf
<Location /server-status>
    SetHandler server-status
    Require ip 127.0.0.1
</Location>

访问:

http://localhost/server-status

十、压测验证

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

总结(最重要几点)

✅ 用 event MPM
✅ 合理设置 MaxRequestWorkers
✅ 开 KeepAlive + 压缩 + 缓存
✅ 用 PHP-FPM
✅ 必要时 Nginx 前置


如果你能告诉我:

  • CentOS 版本
  • Apache 版本
  • 内存 / CPU
  • 是否 PHP / WordPress / Java

我可以帮你给出 精准配置参数。

0 踩