温馨提示×

centos如何优化apache2性能

小樊
39
2026-09-27 03:28:55
栏目: 智能运维

在 CentOS 上优化 Apache(httpd) 性能,可以从 系统层面、Apache 配置、模块选择、缓存与压缩、以及监控 几个方面入手。下面按实战优先级给你一套常用优化方案。


一、系统层面优化

1. 调整内核参数(/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
fs.file-max = 1000000

执行:

sysctl -p

2. 提高文件描述符限制

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

二、Apache 运行模式选择(非常重要)

CentOS 默认:

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

查看当前 MPM:

httpd -V | grep MPM

✅ 推荐:event(高并发)或 worker


三、MPM 参数优化(核心)

1. prefork(兼容但性能一般)

<IfModule mpm_prefork_module>
    StartServers        5
    MinSpareServers     5
    MaxSpareServers     10
    ServerLimit         512
    MaxClients          512
    MaxRequestsPerChild 3000
</IfModule>

2. event(推荐)

<IfModule mpm_event_module>
    StartServers        4
    MinSpareThreads     25
    MaxSpareThreads     75
    ThreadLimit         64
    ThreadsPerChild     25
    ServerLimit         16
    MaxRequestWorkers   400
    MaxConnectionsPerChild 10000
</IfModule>

修改后:

systemctl restart httpd

四、Apache 核心配置优化

1. 关闭不必要的模块

httpd -M

常用可禁用:

  • status_module(生产可关)
  • autoindex_module
  • userdir_module

2. KeepAlive 优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

3. 超时控制

Timeout 30

五、启用压缩(减少带宽)

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

六、启用缓存

1. 浏览器缓存

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

2. 磁盘缓存(可选)

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/httpd
</IfModule>

七、静态资源与 PHP 分离(强烈建议)

  • 静态文件:Apache / Nginx
  • 动态请求:PHP-FPM

推荐架构:

Nginx (前端) -> Apache + PHP-FPM

或从 Apache 直接:

yum install php-fpm

八、日志优化(高并发必做)

减少日志量

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

九、监控与压测

1. 查看状态

systemctl status httpd
ss -ant | grep :80 | wc -l

2. 压测

yum install httpd-tools
ab -n 10000 -c 500 http://localhost/

十、推荐默认优化组合(总结)

✅ CentOS + Apache 优化最佳实践:

  • MPM:event
  • KeepAlive:开但短
  • 启用:deflate + expires
  • 禁用:无用模块
  • PHP:PHP-FPM
  • 日志:过滤静态
  • 系统:调高 fd & 网络参数

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

  • CentOS 版本
  • Apache 版本
  • 是否跑 PHP / Java / 静态站
  • 并发量级别

我可以直接给你一套 可复制的 httpd.conf 配置。

0 踩