← Back
nginx

我们是如何解决了一个自定义 Kong 插件中的 Lua 异常所引起的 CPU 瓶颈的(使用 OpenResty XRay)

  • 问题:Kong 服务器中的高 CPU 使用率
  • 分析和报告
  • 结果:提高了性能,降低了 CPU 使用率
Photo by 章亦春
  • 问题:Kong 服务器中的高 CPU 使用率
  • 分析和报告
  • 结果:提高了性能,降低了 CPU 使用率

在线上 Kong 服务进程中实时统计 CPU 和内存用量最高的插件(使用 OpenResty XRay)

  • 服务器进程中所有 Kong 插件的 CPU 使用情况
  • 服务器进程中所有 Kong 插件的内存使用情况
  • 服务器的额外负担
  • 下一步是什么?
Photo by 章亦春
  • 服务器进程中所有 Kong 插件的 CPU 使用情况
  • 服务器进程中所有 Kong 插件的内存使用情况
  • 服务器的额外负担
  • 下一步是什么?

自动诊断线上请求的 200ms 额外延时

  • 问题
  • 分析过程
  • 全自动化的分析
  • OpenResty XRay 是什么
Photo by 章亦春
  • 问题
  • 分析过程
  • 全自动化的分析
  • OpenResty XRay 是什么

使用 YSQL 语言对 Nginx 进程进行实时请求计数

  • 如何安装 run-ysql 工具
  • 统计实时总请求数
  • 筛选出特定的请求
  • 在 Web 控制台中使用 YSQL
  • 真正的非侵入式追踪
Photo by 章亦春
  • 如何安装 run-ysql 工具
  • 统计实时总请求数
  • 筛选出特定的请求
  • 在 Web 控制台中使用 YSQL
  • 真正的非侵入式追踪

当 Lua IPC 管道阻塞 OpenResty 或 Nginx 事件循环的时候

  • 问题
  • 分析
  • 解决方案
  • 结果
Photo by Yichun Zhang
  • 问题
  • 分析
  • 解决方案
  • 结果

优化超大 Nginx 配置导致的内存碎片

  • 挑战
  • 分析
  • 解决方案
  • 结果
Photo by Yichun Zhang
  • 挑战
  • 分析
  • 解决方案
  • 结果

在 OpenResty 或 Nginx 进程中追踪最慢的 PCRE 正则表达式

  • 系统环境
  • 无需猜测,缩小问题范围
  • 限制 PCRE 的执行开销
  • 非回溯正则表达式引擎
  • Lua 的内置模式
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销
  • 系统环境
  • 无需猜测,缩小问题范围
  • 限制 PCRE 的执行开销
  • 非回溯正则表达式引擎
  • Lua 的内置模式
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销

在 OpenResty 或 Nginx 进程中列出已加载的 Lua 模块

  • 系统环境
  • 已加载 Lua 模块的名称
  • 直接在 Web 控制台中运行
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销
Photo by Yichun Zhang
  • 系统环境
  • 已加载 Lua 模块的名称
  • 直接在 Web 控制台中运行
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销

分析 OpenResty 或 Nginx 中最耗 CPU 的请求

  • 系统环境
  • 最耗 CPU 的请求主机名
  • 最耗 CPU 的请求 URI
  • 深入挖掘
  • 直接在 Web 控制台中运行
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销
Photo by Yichun Zhang
  • 系统环境
  • 最耗 CPU 的请求主机名
  • 最耗 CPU 的请求 URI
  • 深入挖掘
  • 直接在 Web 控制台中运行
  • 追踪容器内的应用
  • 工具的实现方式
  • 工具的开销

在 Ubuntu 20.04 上通过 apt-get 安装 OpenResty

Photo by Ubuntu

OpenResty 中的流式 HTTP 响应输出

Photo by Michal Matlon

预编译 Lua 模块到 LuaJIT 字节码中以加快 OpenResty 启动速度

Photo by Yichun Zhang

在 OpenResty 中正确地测量 Lua 代码的执行时间

Photo by Andrik Langfield

在终端上用 restydoc 查看 OpenResty 文档

Photo by Cristina Gottardi

在 OpenResty 中跨请求共享数据

Photo by Gautam Ganguly

在 CentOS 8 上通过 dnf 安装 OpenResty

Photo by Yichun Zhang

resty 命令行工具演示

Photo by Markus Spiske & Yichun Zhang

为 OpenResty 应用编写你自己的 Lua 模块

Photo by Gerry Roarty

使用 OpenResty 实现“你好世界” HTTP 示例

Photo by 2Photo Pots

Lua 级别 CPU 火焰图简介

  • 什么是火焰图
  • 简单的 Lua 样例
  • 复杂的 Lua 应用
  • 采样开销
  • 安全性
  • 兼容性
  • 其他类型的 Lua 级别火焰图
Photo by Guido Jansen
  • 什么是火焰图
  • 简单的 Lua 样例
  • 复杂的 Lua 应用
  • 采样开销
  • 安全性
  • 兼容性
  • 其他类型的 Lua 级别火焰图

OpenResty 与 Nginx 共享内存区的内存碎片问题

  • 空的共享内存区
  • 填充类似大小的条目
  • 删除奇数键
  • 删除前半部分的键
  • 缓解内存碎片
Photo by Elena Mozhvilo
  • 空的共享内存区
  • 填充类似大小的条目
  • 删除奇数键
  • 删除前半部分的键
  • 缓解内存碎片

OpenResty 和 Nginx 的共享内存区是如何消耗物理内存的

  • Slab 与内存页
  • 分配的内存不一定有消耗
  • 虚假的内存泄漏
  • HUP 重新加载
Photo by Jose G. Ortega Castro
  • Slab 与内存页
  • 分配的内存不一定有消耗
  • 虚假的内存泄漏
  • HUP 重新加载

OpenResty 和 Nginx 如何分配和管理内存

  • 系统层面
  • 应用层面
  • 传统的 Nginx 服务器
Photo by Harrison Broadbent
  • 系统层面
  • 应用层面
  • 传统的 Nginx 服务器
联系我们

很乐意听到您的反馈,请与我们联系 👋

成功发送消息!

我们的专家团队将在 24 小时之内与您联系。
x