線上上 Kong 服務程序中實時統計 CPU 和記憶體用量最高的外掛(使用 OpenResty XRay)

  • 伺服器程序中所有 Kong 外掛的 CPU 使用情況
  • 伺服器程序中所有 Kong 外掛的記憶體使用情況
  • 伺服器的額外負擔
  • 下一步是甚麼?
Photo by 章亦春
  • 伺服器程序中所有 Kong 外掛的 CPU 使用情況
  • 伺服器程序中所有 Kong 外掛的記憶體使用情況
  • 伺服器的額外負擔
  • 下一步是甚麼?

Ylang: 適用於 eBPF、Stap+、GDB 等框架的通用語言(第一集,全四集)

  • 甚麼是動態追蹤
  • 為甚麼命名為 “Y”
  • 入門
  • 各種後端和執行時
  • 為甚麼要使用一個統一的前端語言
  • 語言的語法
  • 未完待續
Photo by 章亦春
  • 甚麼是動態追蹤
  • 為甚麼命名為 “Y”
  • 入門
  • 各種後端和執行時
  • 為甚麼要使用一個統一的前端語言
  • 語言的語法
  • 未完待續

自動診斷線上請求的 200ms 額外延時

  • 問題
  • 分析過程
  • 全自動化的分析
  • OpenResty XRay 是甚麼
Photo by 章亦春
  • 問題
  • 分析過程
  • 全自動化的分析
  • OpenResty XRay 是甚麼

使用 OpenResty XRay 的命令列工具定位洩漏的 Lua table

  • LuaJIT 如何管理記憶體
  • OpenResty XRay 的命令列工具
  • 洩漏示例
  • 分析過程
  • lj-gco-ref 分析器
  • 全自動分析
  • LuaJIT 如何管理記憶體
  • OpenResty XRay 的命令列工具
  • 洩漏示例
  • 分析過程
  • lj-gco-ref 分析器
  • 全自動分析

使用 YSQL 語言對 Nginx 程序進行實時請求計數

  • 如何安裝 run-ysql 工具
  • 統計實時總請求數
  • 篩選出特定的請求
  • 在 Web 控制檯中使用 YSQL
  • 真正的非侵入式追蹤
Photo by 章亦春
  • 如何安裝 run-ysql 工具
  • 統計實時總請求數
  • 篩選出特定的請求
  • 在 Web 控制檯中使用 YSQL
  • 真正的非侵入式追蹤

在微軟 Azure 雲上安裝自主部署版 OpenResty XRay

  • 建立訂閱和資源組
  • 建立 Azure Kubernetes 服務
  • 準備環境變數
  • 透過命令列登入 Azure
  • 為 Kubernetes 建立 namespace 和 secret
  • 建立 Azure Disk
  • 更新持久化卷的配置檔案
  • 更新 kubernetes 的配置檔案
  • 建立持久化卷
  • 部署 Kubernetes 服務
  • 配置應用閘道器
  • 建立訂閱和資源組
  • 建立 Azure Kubernetes 服務
  • 準備環境變數
  • 透過命令列登入 Azure
  • 為 Kubernetes 建立 namespace 和 secret
  • 建立 Azure Disk
  • 更新持久化卷的配置檔案
  • 更新 kubernetes 的配置檔案
  • 建立持久化卷
  • 部署 Kubernetes 服務
  • 配置應用閘道器

當 Lua IPC 管道阻塞 OpenResty 或 Nginx 事件迴圈的時候

  • 問題
  • 分析
  • 解決方案
  • 結果
Photo by Yichun Zhang
  • 問題
  • 分析
  • 解決方案
  • 結果

最佳化超大 Nginx 配置導致的記憶體碎片

  • 挑戰
  • 分析
  • 解決方案
  • 結果
Photo by Yichun Zhang
  • 挑戰
  • 分析
  • 解決方案
  • 結果

QCon 北京 2023 大會上關於深度分析和診斷 K8s 容器應用的演講

本週我受邀在 QCon 北京 2023 大會上作了一次遠端分享。
Photo by Yichun Zhang
本週我受邀在 QCon 北京 2023 大會上作了一次遠端分享。

新的關於 OpenResty XRay 的常見問答

我們最近為 OpenResty XRay 產品準備了一篇《常見問答》文件
Photo by Yichun Zhang
我們最近為 OpenResty XRay 產品準備了一篇《常見問答》文件

OpenResty XRay 的自動分析報告

  • 過去
  • 現在
  • 將來
Photo by Yichun Zhang
  • 過去
  • 現在
  • 將來

OpenResty XRay 分析和解決 B 站重大線上事故

  • 事故描述
  • 事故分析過程
  • 事故後續修復和加固
  • OpenResty XRay 產品和服務
Photo by OpenResty Inc.
  • 事故描述
  • 事故分析過程
  • 事故後續修復和加固
  • OpenResty XRay 產品和服務

記憶體減少 60%,OpenResty XRay 精準定位問題程式碼,快速完成修復上線

  • worker 程序記憶體佔用高
  • 分析過程
  • worker 程序記憶體不釋放的疑問
  • worker 程序記憶體佔用高
  • 分析過程
  • worker 程序記憶體不釋放的疑問

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 伺服器

LuaJIT GC64 模式

  • 老的記憶體限制
    • 何時會碰到這個記憶體限制
    • 記憶體限制是每程序的
    • GC 管理的記憶體
    • 不由 GC 管理的記憶體
    • 提升 x64 模式的記憶體上限到 4 GB
  • 新的 GC64 模式
    • 如何開啟 GC64 模式
    • 效能影響
    • 除錯分析工具鏈
  • 老的記憶體限制
    • 何時會碰到這個記憶體限制
    • 記憶體限制是每程序的
    • GC 管理的記憶體
    • 不由 GC 管理的記憶體
    • 提升 x64 模式的記憶體上限到 4 GB
  • 新的 GC64 模式
    • 如何開啟 GC64 模式
    • 效能影響
    • 除錯分析工具鏈

動態追蹤技術漫談

  • 甚麼是動態追蹤
  • 動態追蹤的優點
  • DTrace 與 SystemTap
  • SystemTap 在生產上的應用
  • 火焰圖
  • 方法論
  • 知識就是力量
  • 開源與除錯符號
  • Linux 核心的支援
  • 硬體追蹤
  • 死亡程序的遺骸分析
  • 傳統的除錯技術
  • 凌亂的除錯世界
  • OpenResty XRay
Photo by Philip Brown
  • 甚麼是動態追蹤
  • 動態追蹤的優點
  • DTrace 與 SystemTap
  • SystemTap 在生產上的應用
  • 火焰圖
  • 方法論
  • 知識就是力量
  • 開源與除錯符號
  • Linux 核心的支援
  • 硬體追蹤
  • 死亡程序的遺骸分析
  • 傳統的除錯技術
  • 凌亂的除錯世界
  • OpenResty XRay
聯絡我們

很樂意聽到您的反饋,請與我們聯絡 👋

成功傳送訊息!

我們的專家團隊將在 24 小時之內與您聯絡。
x