我们如何在一个 500k QPS 的 OpenResty 网关中定位 244 毫秒的性能异常

💡 原文中文,约4400字,阅读约需11分钟。
📝

内容提要

我们对一家金融科技客户的跨境支付系统进行了性能评估,发现P99延迟高达300ms。通过OpenResty XRay分析,识别出Lua代码中的性能瓶颈并提出优化建议,最终将P99延迟降低并节约30% CPU成本。客户计划将性能分析集成到CI/CD流程中,以主动防范性能问题。

🎯

关键要点

  • 对一家金融科技客户的跨境支付系统进行性能评估,发现P99延迟高达300ms。
  • 通过OpenResty XRay分析,识别出Lua代码中的性能瓶颈。
  • 提出优化建议,最终将P99延迟降低并节约30% CPU成本。
  • 客户计划将性能分析集成到CI/CD流程中,以主动防范性能问题。
  • 系统入口是基于OpenResty构建的高性能API网关,每天承载数百亿次调用。
  • P50延迟稳定在10ms以内,但P99延迟曲线显示出300ms的尖刺,超出SLA阈值。
  • OpenResty XRay揭示了无法解释的P99延迟和持续高企的CPU利用率。
  • 建议将string.gmatch替换为ngx.gmatch以提高性能。
  • 发现log阶段的Lua代码反复编译正则表达式,导致CPU消耗过高。
  • 建议在ngx.re.*调用中添加'o'选项以优化正则表达式的性能。
  • 客户未启用PCRE JIT编译选项,导致未能享受性能提升。
  • 优化后,P99延迟从300ms降至稳定水平,CPU利用率下降约30%。
  • 客户计划将OpenResty XRay的性能分析能力集成到CI/CD流程中,转变为主动防御。
  • OpenResty XRay是一个动态追踪产品,能够自动分析应用性能问题并提供建议。
➡️

继续阅读