Tengine开源新特性:如何让HTTPS处理能力轻松翻倍?

Tengine开源新特性:如何让HTTPS处理能力轻松翻倍?
最新回答
灿烂星空

2026-06-13 05:17:52

Tengine通过开源的ssl_async异步模式结合Intel QAT加速卡,将HTTPS处理能力提升至非加速版的2-3.8倍,核心原理是将SSL私钥运算卸载至硬件,释放CPU资源以提升并发处理能力。

一、背景与挑战
  1. HTTPS性能瓶颈

    速度变慢:SSL/TLS握手涉及大量加密运算,增加延迟。

    CPU消耗高:私钥运算(如RSA、ECDSA)依赖CPU密集型计算,导致服务器成本上升。

    软件优化局限:Session复用、OCSP Stapling等技术虽能缓解问题,但无法满足流量爆发式增长的需求。

  2. 硬件加速方案

    CPU摩尔定律失效:硬件性能提升放缓,专用加速卡(如Intel QAT)成为关键解决方案。

    Tengine的突破:首次开源支持Intel QAT加速卡卸载HTTPS运算,实现处理能力翻倍。

二、加速方案核心特性

Tengine-2.2.2通过以下特性实现HTTPS性能提升:

  1. ssl_async异步模式

    支持OpenSSL异步接口,将私钥运算卸载至Intel QAT硬件。

    关键组件:

    Tengine的ssl_async指令:启用异步加速模式。

    OpenSSL + QAT Engine:适配OpenSSL-1.1.0异步接口,调用QAT引擎。

    QAT Driver:驱动硬件完成加密运算。

图1:Tengine基于Intel QAT的异步加速框架
  1. TLS 1.3支持

    实现TLS握手0-RTT(零往返时间),减少握手延迟,提升连接建立速度。

  2. upstream配置优化

    支持include指令,简化配置管理,提升运维效率。

三、技术原理
  1. 异步事件处理机制

    扩展异步事件:在原有socket异步读/写基础上,增加针对硬件引擎的异步事件(async_fd)。

    事件唤醒流程:

    Tengine接收SSL/TLS请求后,将私钥运算卸载至QAT硬件。

    OpenSSL返回异步错误码(SSL_ERROR_WANT_ASYNC),Tengine释放CPU资源。

    QAT硬件完成运算后,通过eventfd通知Tengine,唤醒异步事件继续处理。

图2:异步事件处理流程
  1. 硬件卸载流程

    握手阶段:Tengine通过SSL_do_handshake发起握手,OpenSSL将私钥运算生成异步任务,交由QAT引擎处理。

    任务调度:QAT引擎暂停当前任务并返回错误码,Tengine挂起任务后处理其他连接。

    结果回收:QAT硬件完成后,Tengine通过eventfd被唤醒,继续执行未完成的握手流程。

图3:硬件卸载与任务调度流程四、性能数据对比

在相同硬件环境下(Intel Xeon E5-2650 v2 @ 2.60GHz,32核),启用QAT加速后性能显著提升:

  1. RSA-RSA-AES128-GCM-SHA256

    QAT加速:8核QPS达17.6k。

    非加速:32核QPS仅29k。

    提升效果:8核时性能是非加速版的3.8倍。

  1. ECDHE-RSA-AES128-GCM-SHA256

    QAT加速:16核QPS达15k。

    非加速:32核QPS仅9.4k。

    提升效果:16核时性能是非加速版的2.65倍。

  1. ECDHE-ECDSA-AES128-GCM-SHA256(secp384r1)

    QAT加速:8核QPS达13k。

    非加速:32核QPS仅11k。

    提升效果:8核时性能是非加速版的2倍。

  1. ECDHE-ECDSA-AES128-GCM-SHA256(prime256v1)

    QAT加速:8核达硬件峰值16k。

    非加速:32核QPS达29k。

    提升效果:8核时性能仅提升23%(受硬件峰值限制)。

五、总结
  1. 性能提升关键

    硬件卸载:将SSL私钥运算从CPU转移至QAT加速卡,释放CPU资源。

    异步框架:通过ssl_async模式实现非阻塞运算,提升并发处理能力。

  2. 适用场景

    高并发HTTPS服务:如电商、金融等对延迟敏感的场景。

    CPU资源受限环境:通过硬件加速降低CPU负载,节省成本。

  3. 局限性

    硬件峰值限制:如ECDHE-ECDSA(P-256)在8核时已达QAT峰值,性能提升有限。

进一步了解:可访问

Tengine GitHub开源页面
参与讨论或获取更多技术细节。