温馨提示×

centos如何优化apache

小樊
44
2026-08-03 22:29:50
栏目: 智能运维

CentOS 上优化 Apache(httpd),通常从 系统层面、Apache 配置、模块优化、PHP/应用层、缓存与静态资源 几个方面入手。下面给你一套实用且可落地的优化方案(适用于 CentOS 7 / 8 及 Rocky / Alma 类似系统)。


一、系统层面优化

1. 调整系统文件描述符限制

Apache 高并发时需要大量文件句柄。

ulimit -n

临时修改:

ulimit -n 65535

永久修改:

vi /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

2. 内核参数优化(sysctl)

vi /etc/sysctl.conf

推荐配置:

net.core.somaxconn = 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.ip_local_port_range = 1024 65535

生效:

sysctl -p

二、Apache 核心配置优化

配置文件位置:

/etc/httpd/conf/httpd.conf

1. 选择 MPM 模式(重要)

查看当前 MPM:

httpd -V | grep MPM

✅ 推荐:event MPM(高并发)

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

确保启用:

LoadModule mpm_event_module modules/mod_mpm_event.so

2. MPM event 推荐配置

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

✅ 说明:

  • MaxRequestWorkers 决定最大并发
  • MaxConnectionsPerChild 防止内存泄漏

3. KeepAlive 优化

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

✅ 建议:

  • 高并发:KeepAliveTimeout 2~5
  • 静态资源多:可适当提高

三、Apache 模块优化

1. 禁用无用模块

减少内存占用。

httpd -M

常见可禁用模块:

# 注释掉以下模块
# mod_cgi
# mod_userdir
# mod_autoindex

2. 启用压缩(mod_deflate)

vi /etc/httpd/conf.d/deflate.conf
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css text/js application/javascript application/json
</IfModule>

3. 启用缓存(mod_expires)

vi /etc/httpd/conf.d/expires.conf
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 30 days"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
</IfModule>

四、PHP 层优化(如使用 PHP)

1. 使用 PHP-FPM(非常重要)

yum install php php-fpm -y

Apache 配置转发:

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

2. PHP-FPM 优化

vi /etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30

五、静态资源与访问优化

1. 关闭目录浏览

Options -Indexes

2. 开启文件缓存(mod_file_cache,可选)

适合静态站点。


3. 使用 CDN / Nginx 前置(强烈推荐)

  • Apache 处理动态
  • Nginx / CDN 处理静态

六、日志优化

1. 减少日志量

CustomLog logs/access_log combined

或按条件记录:

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

2. 日志轮转

vi /etc/logrotate.d/httpd

七、性能测试与监控

1. 测试工具

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

2. 查看 Apache 状态

systemctl status httpd

启用 status 页面:

LoadModule status_module modules/mod_status.so
<Location /server-status>
    SetHandler server-status
    Require ip 127.0.0.1
</Location>

八、推荐“通用优化模板”(总结)

高并发 Apache 优化组合

  • MPM event
  • KeepAlive 短连接
  • PHP-FPM
  • 开启压缩 + 缓存
  • 禁用无用模块
  • 系统参数调优

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

  • ✅ CentOS 版本
  • ✅ Apache 版本
  • ✅ 是否使用 PHP / 什么程序(WordPress / Laravel / 自研)
  • ✅ 服务器配置(CPU / 内存)

我可以 直接给你一份定制化的 httpd.conf 配置

0