优化apache ssl性能的核心是减少https连接计算开销、提升复用率、释放主线程资源,需从协议精简(启用tls 1.3、禁用旧协议)、高效缓存(shmcb会话缓存+合理大小与超时)、连接复用(session tickets、ocsp stapling、http/2)及内核协同(event mpm、内核参数调优)四方面入手。

优化 Apache 的 SSL 处理模型以支撑更高并发,核心不是堆 CPU 或加机器,而是减少每次 HTTPS 连接的计算开销、提升复用率、释放主线程资源。关键在协议精简、缓存高效、连接复用和内核协同四方面。
启用 TLS 1.3 并收紧协议与套件
TLS 1.3 握手只需 1-RTT(甚至 0-RTT),相比 TLS 1.2 的 2-RTT 显著降低延迟;同时移除不安全算法,减少协商耗时和 CPU 解密压力:
- 禁用所有旧协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 - 强制使用 TLS 1.2/1.3:
SSLProtocol +TLSv1.2 +TLSv1.3 - 选用硬件友好套件(如 AES-GCM、ChaCha20)并启用前向保密:
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305 - 固定服务器优先顺序:
SSLHonorCipherOrder on
配置高命中率的 SSLSessionCache(共享内存)
会话复用是降 CPU 最直接的手段。必须用 shmcb(共享内存),避免磁盘或网络后端带来的延迟和锁争用:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 确保模块已启用:
a2enmod socache_shmcb(Debian/Ubuntu)或检查httpd -M | grep socache - 路径权限正确:父目录属主为 Apache 运行用户(如
www-data),SELinux/AppArmor 不拦截 - 按并发设大小:2000 并发起步用
1048576(1MB);5000+ 峰值建议20971520(20MB);中小站 512KB(524288)足够 - 显式指定子缓存数(防锁争用):
SSLSessionCache "shmcb:/var/cache/apache2/ssl_scache(1048576):32" - 设置合理超时:
SSLSessionCacheTimeout 300(不低于 180 秒)
开启 Session Tickets 并启用 OCSP Stapling
Session Tickets 让客户端无需查服务端缓存即可复用会话,适合分布式或多实例部署;OCSP Stapling 则把证书状态验证从客户端拉取变为服务端主动推送,省去一次 RTT:
- 启用票据机制:
SSLSessionTickets on - 启用 OCSP Stapling:
SSLUseStapling on - 配独立缓存:
SSLStaplingCache "shmcb:/var/cache/apache2/ocsp-stapling-cache(131072)"
配合 MPM 和系统参数释放连接瓶颈
SSL 处理再快,卡在连接排队或内核限制上也白搭:
- 切换至
eventMPM(非 prefork):支持异步处理 HTTPS 连接,显著降低线程开销 - 调高连接队列:
ListenBacklog 1024,并设MaxRequestWorkers匹配可用内存 - 内核调优:
net.core.somaxconn = 65535、net.ipv4.tcp_tw_reuse = 1、net.ipv4.ip_local_port_range = 1024 65535 - 开启 HTTP/2:
Protocols h2 http/1.1,利用多路复用减少连接新建需求










