我们如何在一个 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是一个动态追踪产品,能够自动分析应用性能问题并提供建议。

延伸问答

如何评估跨境支付系统的性能?

通过对系统进行性能评估,发现P99延迟高达300ms,并利用OpenResty XRay分析识别性能瓶颈。

OpenResty XRay如何帮助识别性能问题?

OpenResty XRay通过非侵入式深度扫描,揭示了无法解释的P99延迟和持续高企的CPU利用率。

优化后P99延迟和CPU利用率的变化如何?

优化后,P99延迟从300ms降至稳定水平,CPU利用率下降约30%。

在Lua代码中发现了哪些性能瓶颈?

发现string.gmatch函数调用导致P99延迟毛刺,且log阶段的Lua代码反复编译正则表达式消耗过高CPU。

客户如何计划防范未来的性能问题?

客户计划将性能分析集成到CI/CD流程中,以主动防范性能问题。

为什么未启用PCRE JIT编译选项会影响性能?

未启用PCRE JIT编译选项导致系统未能享受性能提升,影响整体性能表现。

➡️

继续阅读