← Back
Openresty-Xray

Ylang: 適用於 eBPF、SystemTap、GDB 等框架的動態追蹤語言(第一集,全四集)

  • 甚麼是動態追蹤
  • 為甚麼命名為 “Y”
  • Ylang 入門
  • 動態追蹤後端:eBPF+、Stap+、GDB 和 ODB
  • 為甚麼動態追蹤需要一個統一的前端語言
  • Ylang 語法:真正相容 C
  • 常見問題
Photo by 章亦春
  • 甚麼是動態追蹤
  • 為甚麼命名為 “Y”
  • Ylang 入門
  • 動態追蹤後端:eBPF+、Stap+、GDB 和 ODB
  • 為甚麼動態追蹤需要一個統一的前端語言
  • Ylang 語法:真正相容 C
  • 常見問題

定位洩漏的 Lua table:registry / _LOADED(package.loaded)引用路徑 · OpenResty XRay

  • LuaJIT 如何管理記憶體
  • OpenResty XRay 的命令列工具
  • 一個 Lua table 洩漏示例
  • 按 LuaJIT GC 物件型別拆解記憶體
  • 解讀 lj-gco-ref 火焰圖:registry、_LOADED、package.loaded
  • 全自動 Lua 記憶體洩漏分析
  • LuaJIT 如何管理記憶體
  • OpenResty XRay 的命令列工具
  • 一個 Lua table 洩漏示例
  • 按 LuaJIT GC 物件型別拆解記憶體
  • 解讀 lj-gco-ref 火焰圖:registry、_LOADED、package.loaded
  • 全自動 Lua 記憶體洩漏分析

使用 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 服務
  • 配置應用閘道器

Nginx 正則效能:用動態追蹤定位最慢的正則模式

  • 前提條件與環境
  • 用 CPU 火焰圖定位慢正則
  • 正則最佳化後的效能對比
  • 用 lua_regex_match_limit 限制 PCRE 回溯
  • 非回溯引擎:RE2 與 OpenResty Regex
  • Lua 內建模式作為正則替代
  • 在 Docker 和 Kubernetes 中追蹤正則效能
  • 動態追蹤工具的實現原理
  • 工具開銷:非取樣時為零
  • FAQ:Nginx 正則效能
  • 前提條件與環境
  • 用 CPU 火焰圖定位慢正則
  • 正則最佳化後的效能對比
  • 用 lua_regex_match_limit 限制 PCRE 回溯
  • 非回溯引擎:RE2 與 OpenResty Regex
  • Lua 內建模式作為正則替代
  • 在 Docker 和 Kubernetes 中追蹤正則效能
  • 動態追蹤工具的實現原理
  • 工具開銷:非取樣時為零
  • FAQ:Nginx 正則效能

Nginx CPU 佔用過高:定位哪個請求消耗最多 CPU

  • 前提條件與環境準備
  • 定位哪個請求主機名最耗 CPU
  • 定位哪個請求 URI 最耗 CPU
  • 深入探究:為甚麼某些主機名更耗 CPU
  • 在 Web 控制檯中執行這些工具
  • 在容器內追蹤 Nginx CPU 佔用
  • CPU 分析工具的實現原理
  • 分析工具的開銷
  • 常見問題
Photo by Yichun Zhang
  • 前提條件與環境準備
  • 定位哪個請求主機名最耗 CPU
  • 定位哪個請求 URI 最耗 CPU
  • 深入探究:為甚麼某些主機名更耗 CPU
  • 在 Web 控制檯中執行這些工具
  • 在容器內追蹤 Nginx CPU 佔用
  • CPU 分析工具的實現原理
  • 分析工具的開銷
  • 常見問題

Lua CPU 火焰圖實戰:線上定位 LuaJIT 效能瓶頸

  • 甚麼是 Lua CPU 火焰圖
  • 分析簡單 LuaJIT 應用:驗證火焰圖精度
  • 生產環境實戰:複雜 LuaJIT 應用
  • 取樣開銷
  • 生產安全性:不修改目標程序
  • 相容性
  • 常見問題
Photo by Guido Jansen
  • 甚麼是 Lua CPU 火焰圖
  • 分析簡單 LuaJIT 應用:驗證火焰圖精度
  • 生產環境實戰:複雜 LuaJIT 應用
  • 取樣開銷
  • 生產安全性:不修改目標程序
  • 相容性
  • 常見問題

OpenResty Inc. 2019 技術沙龍及商業產品交流會回顧

  • 8 月 10 日下午,北京開源技術沙龍
  • 8 月 11 日下午,北京商業產品交流會
  • 8 月 17 日下午,深圳開源技術沙龍
  • 8 月 10 日下午,北京開源技術沙龍
  • 8 月 11 日下午,北京商業產品交流會
  • 8 月 17 日下午,深圳開源技術沙龍

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