Apache TLS高负载优化核心是“握手更轻、连接更稳、计算更省”,需协同配置会话复用(shmcb缓存+Session Tickets)、TLS 1.3/HTTP/2协议栈、event MPM模型及内核TCP缓冲区,禁用老旧协议并实测验证复用率。

Apache TLS 高级调优不是堆参数,而是围绕“握手更轻、连接更稳、计算更省”三个核心目标做协同配置。重点不在单点修改,而在缓存机制、协议栈、MPM模型和内核网络四层联动。
精准配置 TLS 会话复用机制
避免重复握手是降低 CPU 开销最直接的手段,必须同时启用 Session Cache 和 Session Tickets:
- 使用 shmcb 共享内存缓存(非 file/dbm):
SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(10485760)32——10 MB 缓存空间 + 32 个子缓存槽,减少锁争用;提前创建目录并授权:chown www-data:www-data /var/cache/apache2 - 强制设置老化超时:
SSLSessionCacheTimeout 300(5 分钟),防止缓存条目长期滞留导致内存缓慢增长 - 开启加密票据复用:
SSLSessionTickets On,客户端可凭票据快速恢复会话,不依赖服务端缓存,适合横向扩展场景 - 验证是否生效:用
openssl s_client -connect example.com:443 -reconnect -servername example.com | grep Reused,输出含 Reused 才算真正复用成功
强制启用 TLS 1.3 与 HTTP/2 协议栈
TLS 1.3 将握手从 2-RTT 压缩至 1-RTT(支持 0-RTT),HTTP/2 多路复用显著减少连接数压力:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 禁用所有老旧协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3 - 在 HTTPS 虚拟主机中启用 HTTP/2:
Protocols h2 http/1.1(要求 Apache ≥2.4.17 + OpenSSL ≥1.0.2) - 开启 OCSP 装订加速证书吊销校验:
SSLUseStapling on,搭配独立 stapling 缓存:SSLStaplingCache "shmcb:/var/cache/apache2/ssl_stapling(128000)"
匹配 MPM 模型与 KeepAlive 行为
HTTPS 下连接复用效果高度依赖 MPM 类型与后端协同,prefork 模型不适合高并发 HTTPS:
- 启用 event MPM:
a2enmod mpm_event && a2dismod mpm_prefork - 在
mpm_event.conf中合理设线程资源:ThreadsPerChild 100、MaxRequestWorkers 800、KeepAliveTimeout 5、MaxKeepAliveRequests 100 - 若反向代理到 Tomcat 等后端,同步调整其连接器参数(如
keepAliveTimeout="5000"),确保两端超时呈阶梯式对齐,避免连接提前中断
卸载 TLS 计算或调优内核网络栈
当单机 HTTPS QPS 超过 800,CPU 常被加解密占满,此时需硬件加速或系统级缓冲优化:
- 确认 CPU 支持 AES-NI:
grep aes /proc/cpuinfo,存在输出即支持;确保 OpenSSL 版本 ≥1.1.1 并启用硬件引擎 - 增大 TCP 接收缓冲区:
net.ipv4.tcp_rmem="4096 524288 16777216",同步提升硬上限:net.core.rmem_max=16777216 - 大响应体(如 API JSON、文件下载)场景下,同样调大发送缓冲:
net.ipv4.tcp_wmem和net.core.wmem_max

















