apache高带宽瓶颈根源在于连接处理、tcp栈调优不足、静态资源未压缩缓存及mpm模型不适配;需调优内核参数(somaxconn、tcp_tw_reuse、tcp_rmem/wmem)、切换event mpm、启用http/2与keepalive、卸载静态资源至cdn或缓存。

优化TCP与内核网络参数
高带宽场景下,Linux默认的TCP参数容易成为瓶颈,尤其在大量短连接或长连接复用时:
- 增大连接队列:设置 net.core.somaxconn = 65535,避免 SYN 队列溢出丢包
- 复用 TIME_WAIT 连接:启用 net.ipv4.tcp_tw_reuse = 1(仅适用于客户端地址唯一场景)
- 提升文件描述符上限:fs.file-max = 100000,并同步配置 Apache 的
RLimitNOFILE - 调整 TCP 缓冲区:根据带宽延迟积(BDP)适当增大
net.ipv4.tcp_rmem和net.ipv4.tcp_wmem,例如设为4096 65536 8388608
切换并调优 event MPM 模块
prefork 或 worker 在高带宽+高并发下内存和上下文切换压力大;event MPM 是专为高吞吐、长连接设计的线程化模型:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 禁用 prefork:
a2dismod mpm_prefork(Ubuntu/Debian)或注释/etc/httpd/conf.modules.d/00-mpm.conf中对应行(CentOS) - 启用 event:
a2enmod mpm_event或取消注释 event 段落 - 合理设置并发能力:例如 4GB 内存服务器可设
MaxRequestWorkers 300,ThreadsPerChild 25,MaxConnectionsPerChild 0
启用 HTTP/2 与智能 KeepAlive
HTTP/2 多路复用能显著降低高带宽下多个资源请求的往返延迟;但需 TLS(HTTPS)支持,且依赖 OpenSSL 1.0.2+ 和 mod_http2:
- 加载模块:
LoadModule http2_module modules/mod_http2.so - 虚拟主机中启用:
Protocols h2 http/1.1 - KeepAlive 要“紧”而不断:设
KeepAliveTimeout 3(避免空闲连接长期占线),MaxKeepAliveRequests 200(充分利用复用)
卸载静态资源传输压力
即使带宽充足,Apache 逐个读取、压缩、发送静态文件仍会消耗 CPU 和磁盘 I/O,拖慢整体响应:
- 启用
mod_deflate压缩文本类资源(HTML/CSS/JS),但跳过图片、视频等已压缩格式 - 用
mod_expires设置强缓存头,让浏览器/CDN本地缓存,减少回源请求 - 将静态资源交由 CDN 托管(如 Nginx 前置、Cloudflare、阿里云 CDN),Apache 只处理动态逻辑
- 若必须 Apache 直出,考虑开启
mod_cache_disk缓存热点静态内容到 SSD
ss -s 和 netstat -s | grep -i "retransmit\|drop" 看是否有底层丢包或重传,再结合 ab 或 wrk 压测验证优化效果。










