2026-06-13 05:17:52
Tengine通过开源的ssl_async异步模式结合Intel QAT加速卡,将HTTPS处理能力提升至非加速版的2-3.8倍,核心原理是将SSL私钥运算卸载至硬件,释放CPU资源以提升并发处理能力。
一、背景与挑战HTTPS性能瓶颈
速度变慢:SSL/TLS握手涉及大量加密运算,增加延迟。
CPU消耗高:私钥运算(如RSA、ECDSA)依赖CPU密集型计算,导致服务器成本上升。
软件优化局限:Session复用、OCSP Stapling等技术虽能缓解问题,但无法满足流量爆发式增长的需求。
硬件加速方案
CPU摩尔定律失效:硬件性能提升放缓,专用加速卡(如Intel QAT)成为关键解决方案。
Tengine的突破:首次开源支持Intel QAT加速卡卸载HTTPS运算,实现处理能力翻倍。
Tengine-2.2.2通过以下特性实现HTTPS性能提升:
支持OpenSSL异步接口,将私钥运算卸载至Intel QAT硬件。
关键组件:
Tengine的ssl_async指令:启用异步加速模式。
OpenSSL + QAT Engine:适配OpenSSL-1.1.0异步接口,调用QAT引擎。
QAT Driver:驱动硬件完成加密运算。

TLS 1.3支持
实现TLS握手0-RTT(零往返时间),减少握手延迟,提升连接建立速度。
upstream配置优化
支持include指令,简化配置管理,提升运维效率。
扩展异步事件:在原有socket异步读/写基础上,增加针对硬件引擎的异步事件(async_fd)。
事件唤醒流程:
Tengine接收SSL/TLS请求后,将私钥运算卸载至QAT硬件。
OpenSSL返回异步错误码(SSL_ERROR_WANT_ASYNC),Tengine释放CPU资源。
QAT硬件完成运算后,通过eventfd通知Tengine,唤醒异步事件继续处理。

握手阶段:Tengine通过SSL_do_handshake发起握手,OpenSSL将私钥运算生成异步任务,交由QAT引擎处理。
任务调度:QAT引擎暂停当前任务并返回错误码,Tengine挂起任务后处理其他连接。
结果回收:QAT硬件完成后,Tengine通过eventfd被唤醒,继续执行未完成的握手流程。
在相同硬件环境下(Intel Xeon E5-2650 v2 @ 2.60GHz,32核),启用QAT加速后性能显著提升:
QAT加速:8核QPS达17.6k。
非加速:32核QPS仅29k。
提升效果:8核时性能是非加速版的3.8倍。

QAT加速:16核QPS达15k。
非加速:32核QPS仅9.4k。
提升效果:16核时性能是非加速版的2.65倍。

QAT加速:8核QPS达13k。
非加速:32核QPS仅11k。
提升效果:8核时性能是非加速版的2倍。

QAT加速:8核达硬件峰值16k。
非加速:32核QPS达29k。
提升效果:8核时性能仅提升23%(受硬件峰值限制)。

性能提升关键
硬件卸载:将SSL私钥运算从CPU转移至QAT加速卡,释放CPU资源。
异步框架:通过ssl_async模式实现非阻塞运算,提升并发处理能力。
适用场景
高并发HTTPS服务:如电商、金融等对延迟敏感的场景。
CPU资源受限环境:通过硬件加速降低CPU负载,节省成本。
局限性
硬件峰值限制:如ECDHE-ECDSA(P-256)在8核时已达QAT峰值,性能提升有限。
进一步了解:可访问