温馨提示×

如何优化apache2性能

小樊
33
2026-10-11 01:29:39
栏目: 编程语言

优化 Apache2(httpd)性能通常从 配置调优、模块管理、系统资源、缓存与反向代理、监控 几个方面入手。下面按优先级和可操作性给你一套实用方案。


一、选择并优化 MPM(最重要)

Apache 性能核心在于 MPM(多路处理模块)。

1. 查看当前 MPM

apachectl -V | grep MPM

常见 MPM:

  • prefork:稳定但耗内存(兼容老模块)
  • worker:多线程,性能较好
  • event:最优(高并发,支持 keep-alive)

2. 推荐配置

✅ 高并发场景(PHP-FPM / 反向代理)

使用 event

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

PHP 用户建议

  • Apache + PHP-FPM
  • 不要用 mod_php

二、关闭不必要的模块

查看已启用模块

apachectl -M

建议关闭的常见模块

a2dismod status
a2dismod autoindex
a2dismod negotiation
a2dismod userdir

只保留必要模块(如 rewrite、ssl、headers)


三、KeepAlive 优化

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

⚠️ 太长会占用连接,太短会增加握手


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

mod_deflate

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

五、启用缓存

1. 浏览器缓存(mod_expires)

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType text/css "access plus 1 week"
</IfModule>

2. 磁盘缓存(mod_cache)

适合静态资源

CacheEnable disk /
CacheRoot /var/cache/apache2

六、使用反向代理(高级优化)

如果后端是:

  • Node.js
  • Java
  • Python

推荐:

ProxyPass /api/ http://127.0.0.1:8080/
ProxyPassReverse /api/ http://127.0.0.1:8080/

Apache 只做 入口 & 静态文件


七、操作系统层面优化

1. 文件描述符限制

ulimit -n 65535

2. 内核参数(示例)

net.core.somaxconn=65535
net.ipv4.tcp_tw_reuse=1

3. 使用 SSD + 足够内存


八、日志优化

减少日志量

CustomLog /var/log/apache2/access.log common

或关闭访问日志(仅生产调试用)


九、监控与压测

工具

  • ab
ab -n 10000 -c 200 http://localhost/
  • htop
  • mod_status(谨慎开放)

十、什么时候该换?

如果:

  • 并发 > 5000
  • 纯静态 / API 服务

✅ 建议考虑:

  • Nginx
  • Caddy
  • OpenResty

Apache 更适合:

  • 传统 PHP
  • 企业内网
  • 功能丰富的 .htaccess 场景

总结(快速 Checklist)

✅ 用 event MPM
✅ 关无用模块
✅ 开压缩 & 缓存
✅ PHP 用 FPM
✅ 静态资源走 CDN
✅ 做压测验证

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

  • 系统(Ubuntu / CentOS)
  • Apache 版本
  • 是否用 PHP / 什么业务

我可以给你 针对性配置文件。

0 踩