温馨提示×

centos apache怎么优化

小樊
42
2026-10-03 00:24:21
栏目: 智能运维

下面从 系统层、Apache 本身、模块与代码、监控 几个方面,系统性地讲一下 CentOS + Apache 的优化思路(以 CentOS 7/8 + Apache 2.4 为例,也适用于 Rocky/Alma)。


一、系统层优化(基础)

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

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
fs.file-max = 1000000

生效:

sysctl -p

2. 文件描述符限制

# /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000

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

getenforce
# 如果是 enforcing 且不影响业务,可设为 permissive
setenforce 0

二、Apache 运行模式选择(关键)

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

查看当前 MPM:

httpd -V | grep MPM

CentOS 默认一般是 prefork,建议改为 event:

yum install httpd mod_ssl

编辑:

/etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_event_module modules/mod_mpm_event.so
# 注释掉 prefork / worker

三、Apache 核心配置优化

1. MPM event 推荐配置

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

MaxRequestWorkers 不要超过系统内存承受范围


2. KeepAlive 优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

3. 关闭不必要模块

减少攻击面 & 内存占用:

# 注释掉不需要的 LoadModule
mod_status
mod_userdir
mod_autoindex

四、静态资源 & 性能模块

1. 启用压缩(gzip)

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>

3. 使用 mod_cache(可选)

适合静态内容多的站点。


五、PHP / 后端优化(如适用)

1. 使用 PHP-FPM(不要用 mod_php)

yum install php-fpm

Apache 配置:

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

2. OPcache 必开

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000

六、日志优化

1. 减少日志量

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

2. 日志轮转

/etc/logrotate.d/httpd

七、安全 & 稳定性

  • 禁止目录浏览
Options -Indexes
  • 限制请求体大小
LimitRequestBody 10485760
  • 防止慢速攻击
RequestReadTimeout header=10-20,MinRate=500

八、监控 & 压测

1. 开启 status(内网)

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

2. 压测工具

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

九、常见性能瓶颈对照

现象 可能原因
CPU 高 PHP 慢 / 未开 OPcache
内存爆 prefork + 进程多
连接慢 KeepAlive 过长
并发上不去 MaxRequestWorkers 小

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

✅ CentOS + Apache(event) + PHP-FPM + OPcache + gzip + CDN


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

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

我可以给你一份 可直接用的配置模板。

0 踩