apache高并发https cpu飙升主因是tls握手、密钥计算和证书验证,优化需聚焦协议精简(禁用tls1.0/1.1、启用tls1.2/1.3)、套件聚焦(ecdhe+aead)、双轨会话复用(shmcb缓存+sessiontickets)及event mpm协同。

Apache 在高并发 HTTPS 场景下 CPU 占用率飙升,主要来自 TLS 握手、密钥计算和证书验证这三类开销。调优不是压低参数,而是让加密连接“更轻、更快、更复用”。关键在协议精简、套件聚焦、会话复用和底层协同四方面。
禁用老旧协议,强制启用 TLS 1.2/1.3
TLS 1.0/1.1 握手需 2 轮往返(2-RTT),且含已知漏洞;TLS 1.3 压缩至 1-RTT,部分场景支持 0-RTT 恢复,首字节延迟下降明显,CPU 计算量也更低。
- 配置中明确关闭不安全版本:SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 +TLSv1.3
- 确保 Apache ≥ 2.4.37、OpenSSL ≥ 1.1.1,否则 TLS 1.3 不生效
- 避免用 +all 或只写 TLSv1.3,前者可能意外启用弱协议,后者会切断 TLS 1.2 客户端连接
精简密码套件,禁用 RSA 密钥交换与 CBC 模式
RSA 密钥交换无前向保密,且签名运算耗 CPU;CBC 模式需填充验证,易受 Lucky13 攻击,加解密效率也低于 AEAD。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 只保留 ECDHE + AEAD 组合,例如:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:TLS_CHACHA20_POLY1305_SHA256
- 必须启用:SSLHonorCipherOrder on,否则客户端可绕过服务器优先级选弱套件
- 显式排除不安全算法:!aNULL:!MD5:!RC4:!DES:!CBC:!SHA1
双轨会话复用:缓存 + 票据协同工作
完整 TLS 握手 CPU 开销是复用会话的 3–5 倍。单靠一种机制易失效:进程隔离导致缓存无法共享;票据依赖客户端支持与密钥一致性。
- 服务端缓存(适用于 prefork/event MPM):SSLSessionCache shmcb:/var/cache/apache2/ssl_scache(10485760),配 SSLSessionCacheTimeout 300
- 会话票据(推荐开启):SSLSessionTickets on,并统一票据密钥文件避免跨进程不一致
- 若使用 event MPM,建议同时启用 OCSP Stapling,进一步减少证书验证延迟
配合 MPM 与内核参数释放 TLS 压力
TLS 性能瓶颈常不在 Apache 配置本身,而在运行模型与系统层限制。
- 切换为 event MPM:异步处理 HTTPS 连接,比 prefork 节省 60%+ 内存,减少进程上下文切换带来的 CPU 消耗
- 禁用 SSL 压缩:SSLCompression off,防 CRIME 攻击,也省去压缩/解压 CPU 开销
- 增大 TCP 缓冲区(尤其大响应体场景):net.ipv4.tcp_rmem="4096 524288 16777216",降低重传与等待延迟










