温馨提示×

CentOS怎么优化Apache性能

小樊
59
2026-07-20 08:58:13
栏目: 智能运维

CentOS 下优化 Apache(httpd)性能,通常需要从 系统层面、Apache配置、模块、资源限制、缓存、连接数、PHP/后端 等多方面入手。下面给你一套实战常用优化方案,适合 CentOS 7 / CentOS Stream 8/9。


一、系统层面优化(先打好地基)

1. 调整系统资源限制

ulimit -n

如果小于 65535,修改:

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

2. 调整内核参数

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

生效:

sysctl -p

二、Apache 主配置优化

1. 选用合适的 MPM(重点)

CentOS 默认:

  • CentOS 7:prefork(保守)
  • CentOS 8+:event(推荐)

查看当前 MPM:

httpd -V | grep MPM

推荐:event + PHP-FPM

2. 配置 MPM(关键)

编辑:

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

推荐 event 配置:

LoadModule mpm_event_module modules/mod_mpm_event.so

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

✅ MaxRequestWorkers 决定并发上限(不是越大越好)


三、Apache 核心参数优化

编辑:

vim /etc/httpd/conf/httpd.conf

1. 关闭不必要的模块

减少内存占用:

httpd -M

常见可注释掉:

  • mod_include
  • mod_cgi
  • mod_userdir
  • mod_autoindex

2. KeepAlive 优化

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

✅ 高并发:KeepAlive 可关闭


3. 超时设置

Timeout 30

四、静态资源 & 缓存优化

1. 启用压缩

LoadModule deflate_module modules/mod_deflate.so

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

2. 浏览器缓存

LoadModule expires_module modules/mod_expires.so

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

五、PHP + Apache 优化(非常关键)

✅ 强烈推荐:Apache + PHP-FPM

1. 安装 PHP-FPM

yum install php php-fpm -y

2. Apache 使用 proxy_fcgi

vim /etc/httpd/conf.d/php.conf
<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

3. 启动服务

systemctl enable php-fpm
systemctl start php-fpm

PHP-FPM 优化

vim /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)

1. 关闭不需要的日志

CustomLog logs/access_log combined
# 高并发时可关闭

2. 日志轮转

vim /etc/logrotate.d/httpd

七、防火墙 & SELinux

1. 防火墙

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

2. SELinux(如不熟悉可临时关闭)

setenforce 0

八、压力测试验证

使用 ab 工具

yum install httpd-tools -y
ab -n 10000 -c 100 http://yourdomain.com/

关注:

  • Requests per second
  • Failed requests
  • Time per request

九、典型优化总结(速查表 ✅)

项目 建议
MPM event
PHP PHP-FPM
KeepAlive On / 5s
MaxRequestWorkers 512–2048
压缩 开启
缓存 浏览器缓存
日志 简化
系统限制 65535

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

  • ✅ CentOS 版本
  • ✅ Apache 版本
  • ✅ 是否为 高并发 / 小内存 / 动态网站 / API

我可以 直接帮你给出一套精准的生产级配置

0