温馨提示×

CentOS下Apache如何优化

小樊
45
2026-07-08 17:21:29
栏目: 智能运维

CentOS 下优化 Apache(httpd),可以从 系统层、Apache 配置、模块优化、缓存、PHP/应用层 等多个维度进行。下面按常用实践给你一个体系化优化方案。


一、系统层面优化

1. 调整系统资源限制

编辑:

vi /etc/security/limits.conf

添加:

* soft nofile 65535
* hard nofile 65535

2. 调整内核参数(高并发必做)

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

3. 关闭 SELinux(视情况)

getenforce
setenforce 0

永久关闭:

vi /etc/selinux/config
SELINUX=disabled

二、Apache 运行模式选择(重点)

CentOS 常见 MPM:

  • prefork(老、稳定,但性能低)
  • worker(线程)
  • event(推荐)

查看当前 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
# 注释掉 prefork 和 worker

三、MPM 参数优化(关键)

编辑:

vi /etc/httpd/conf/httpd.conf

或新建:

vi /etc/httpd/conf.d/mpm.conf

示例(4 核 8G 服务器):

<IfModule mpm_event_module>
    StartServers             4
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         50
    MaxRequestWorkers      500
    MaxConnectionsPerChild 10000
</IfModule>

说明:

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

四、Apache 核心配置优化

1. 关闭不需要的模块

httpd -M

注释掉不用的模块,如:

# mod_ldap
# mod_cgi

2. 关闭 DNS 反向解析

HostnameLookups Off

3. 关闭目录浏览

Options -Indexes

4. 关闭 KeepAlive(高并发场景)

KeepAlive Off

或适度调整:

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

五、静态资源与缓存优化

1. 启用压缩(gzip)

vi /etc/httpd/conf.d/deflate.conf
LoadModule deflate_module modules/mod_deflate.so

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

2. 启用缓存(浏览器缓存)

vi /etc/httpd/conf.d/cache.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>

六、PHP 环境优化(如适用)

1. 使用 PHP-FPM(强烈推荐)

yum install php-fpm

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. 减少日志量

CustomLog logs/access_log combined
# 或关闭
# CustomLog /dev/null combined

2. 日志轮转

vi /etc/logrotate.d/httpd

八、安全与性能兼顾

  • 隐藏 Apache 版本
ServerTokens Prod
ServerSignature Off

九、压测验证

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

十、优化总结(速查表)

项目 建议
MPM event
KeepAlive 高并发关闭
压缩 开启
缓存 浏览器缓存
PHP PHP-FPM
文件描述符 65535+
日志 精简

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

  • CentOS 版本(7 / 8 / Stream)
  • 服务器配置(CPU / 内存)
  • 主要用途(静态 / PHP / API)

我可以给你一套 精准的 Apache 优化配置

0