温馨提示×

centos apache怎样优化

小樊
46
2026-09-11 21:07:13
栏目: 智能运维

在 CentOS 上优化 Apache(通常是 httpd),可以从系统层面、Apache 配置、模块、缓存、安全、监控几个方面来做。下面给你一套比较实用、可落地的优化方案(以 CentOS 7/8 + Apache 2.4 为主)。


一、系统层面优化(前提)

1. 关闭或调优 SELinux(视情况)

getenforce
  • 如果是 Enforcing 且不影响业务,可保持
  • 排错时可临时关闭:
setenforce 0

2. 文件描述符限制

ulimit -n

建议至少:

* soft nofile 65535
* hard nofile 65535

写入 /etc/security/limits.conf

3. 内核参数优化(/etc/sysctl.conf)

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192

生效:

sysctl -p

二、Apache 工作模式选择(关键)

查看当前 MPM

httpd -V | grep -i mpm

推荐配置(CentOS 默认是 prefork)

✅ 静态站点 / 低并发

使用 prefork

<IfModule mpm_prefork_module>
    StartServers        5
    MinSpareServers     5
    MaxSpareServers    10
    MaxRequestWorkers  150
    MaxConnectionsPerChild 3000
</IfModule>

✅ 高并发 / 动态内容(PHP-FPM)

使用 event(推荐)

<IfModule mpm_event_module>
    StartServers        4
    MinSpareThreads    64
    MaxSpareThreads   192
    ThreadsPerChild    64
    MaxRequestWorkers  512
    MaxConnectionsPerChild 5000
</IfModule>

修改后:

systemctl restart httpd

三、Apache 核心配置优化

1. 关闭无效模块(非常重要)

查看已加载模块:

httpd -M

常见可关闭:

  • mod_status(非监控环境)
  • mod_userdir
  • mod_autoindex

注释掉对应 LoadModule


2. KeepAlive 优化

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

3. 超时时间

Timeout 30

4. 关闭 DNS 反向解析

HostnameLookups Off

四、缓存与压缩(提升性能)

1. 开启 gzip 压缩

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

五、PHP 优化(如适用)

使用 PHP-FPM(强烈推荐)

yum install php-fpm

Apache 配置:

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

六、日志优化

1. 减少日志量

CustomLog logs/access_log common

或关闭无关日志

2. 日志轮转

确保:

logrotate -d /etc/logrotate.d/httpd

七、安全与稳定

1. 隐藏版本

ServerTokens Prod
ServerSignature Off

2. 限制请求体大小

LimitRequestBody 10485760

八、监控与压测

1. 状态页(可选)

<Location /server-status>
    SetHandler server-status
    Require local
</Location>

2. 压测工具

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

九、最简优化模板(示例)

ServerTokens Prod
KeepAlive On
KeepAliveTimeout 5
Timeout 30
HostnameLookups Off

<IfModule mpm_event_module>
    StartServers 4
    ThreadsPerChild 64
    MaxRequestWorkers 512
</IfModule>

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

  • CentOS 版本
  • Apache 版本
  • 网站类型(静态 / PHP / API)
  • 并发量

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

0 踩