核心是缩短请求全链路耗时并提升并发能力:启用KeepAlive On/Timeout 5/MaxKeepAliveRequests 100;全局HostnameLookups Off;优先使用Event MPM;Directory中AllowOverride None;禁用无关模块;mod_deflate精准压缩;EnableSendfile On;独立日志+BufferedLogs On;ErrorDocument静态化。

优化 Apache 虚拟主机的请求处理管线,核心是缩短请求从抵达服务器到响应返回的全链路耗时,同时提升并发承载能力。这不单靠改几个参数,而是围绕连接管理、模块协作、内容交付路径三方面系统调整。
精简连接建立与复用过程
大量短连接会反复消耗 CPU 和 socket 资源。关键在于让一次 TCP 连接服务更多请求,并快速释放空闲连接。
-
启用 KeepAlive 并设合理超时:在虚拟主机配置内加入
KeepAlive On,KeepAliveTimeout 5,MaxKeepAliveRequests 100。5 秒足够多数浏览器完成资源加载,又避免长连接堆积。 -
禁用 HostnameLookups:全局配置中确保
HostnameLookups Off。否则每个请求都触发 DNS 反查,延迟显著增加且无实际必要。 -
使用 Event MPM(推荐):尤其在启用 HTTPS 或存在长轮询场景时,Event 模式能异步处理空闲连接,比 Prefork 或 Worker 更高效。确认已加载
mod_mpm_event并停用其他 MPM。
减少请求解析与权限检查开销
Apache 默认会对每个请求逐层检查 .htaccess 文件和目录权限,对静态资源路径尤其低效。
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
-
禁用 AllowOverride:在虚拟主机的
<Directory>块中设AllowOverride None。所有重写规则、访问控制应统一写入主配置或虚拟主机段,避免运行时重复读取和解析 .htaccess。 -
简化 Directory 指令嵌套:避免多层
<Directory>或<Location>套用。把静态资源目录(如/var/www/example.com/static)单独用Alias映射,并为其配置精简的权限块。 -
关闭不必要的模块:如不用 CGI、SSI、userdir 等功能,注释掉对应
LoadModule行。模块越少,请求经过的过滤器链越短。
加速内容交付路径
让 HTML、CSS、JS 等文本内容更快发出,图片等二进制内容更少被 Apache 中转。
-
启用 mod_deflate 并精准压缩:只对
text/、application/javascript、application/json等类型启用 Gzip,避开 JPEG、PNG、WebP 等已压缩格式,节省 CPU。 -
启用 SendFile(Linux):在虚拟主机或全局配置中加
EnableSendfile On。让内核直接将文件从磁盘送入 socket 缓冲区,绕过用户态内存拷贝。 -
静态资源交由更轻量服务(可选):若站点静态资源占比高,可将
/static/或/images/路径通过反向代理指向 Nginx,Apache 专注处理 PHP 或动态逻辑,降低整体延迟。
隔离日志与错误处理影响
频繁写日志或开启扩展状态会拖慢请求管线,尤其在高并发下。
-
为每个虚拟主机配独立日志,但禁用 ExtendedStatus:确保
mod_status已加载但ExtendedStatus Off(默认),避免每次请求都收集额外指标。 -
异步写日志(Apache 2.4.13+):启用
BufferedLogs On,让日志批量写入,减少 I/O 阻塞。 -
错误页面本地化:用
ErrorDocument 404 /404.html返回预生成静态页,避免触发 PHP 或复杂逻辑处理 404。

















