← Back
dynamic-tracing

使用 C++ 動態追蹤 C++ 應用

  • 設定目標 C++ 程式
  • 編寫 C++(或 Y++)分析器
  • 將目標和分析器投入執行
  • 支援複雜 C++ 應用的進展
  • 關於除錯符號
  • 結論
Photo by 章亦春
  • 設定目標 C++ 程式
  • 編寫 C++(或 Y++)分析器
  • 將目標和分析器投入執行
  • 支援複雜 C++ 應用的進展
  • 關於除錯符號
  • 結論

自動分析 Core Dump(使用 OpenResty XRay)

  • 檢視 core dump 檔案
  • 使用 OpenResty XRay 的引導式分析功能分析 core dump 檔案
  • 全自動分析與報告
  • 檢視 core dump 檔案
  • 使用 OpenResty XRay 的引導式分析功能分析 core dump 檔案
  • 全自動分析與報告

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

  • 透明的跨容器追蹤
    • 高效的棧展開
    • 分析已終止程序(core dumps)
    • 極低的追蹤開銷
    • 標準 Y 語言庫和工具
    • 網路過濾和控制
    • Y 語言編譯器的實現
    • 作業系統支援
    • 對開源社群的貢獻
    • 結論
    • 致謝
Photo by 章亦春
  • 透明的跨容器追蹤
    • 高效的棧展開
    • 分析已終止程序(core dumps)
    • 極低的追蹤開銷
    • 標準 Y 語言庫和工具
    • 網路過濾和控制
    • Y 語言編譯器的實現
    • 作業系統支援
    • 對開源社群的貢獻
    • 結論
    • 致謝

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

  • Y 語言的語法(接上文)
    • 字串
    • 內建的正規表示式支援
    • 完整控制流支援
    • 浮點數支援
    • 與開源工具鏈的比較
  • 清晰的除錯符號方式
    • 除錯符號:無執行期系統開銷
    • 集中的軟體包資料庫
    • 模糊匹配除錯符號
Photo by 章亦春
  • Y 語言的語法(接上文)
    • 字串
    • 內建的正規表示式支援
    • 完整控制流支援
    • 浮點數支援
    • 與開源工具鏈的比較
  • 清晰的除錯符號方式
    • 除錯符號:無執行期系統開銷
    • 集中的軟體包資料庫
    • 模糊匹配除錯符號

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

  • 語言語法(接上文)
    • 宏拓展
    • 追蹤者與被追蹤者空間
    • 探針
    • 拓展變數型別
Photo by Yichun Zhang
  • 語言語法(接上文)
    • 宏拓展
    • 追蹤者與被追蹤者空間
    • 探針
    • 拓展變數型別

捕捉 Linux 核心追蹤子系統中的兩個 bug(使用 OpenResty XRay)

  • 讀取使用者空間記憶體時的核心死鎖
  • 核心中 x86 斷點插入的資料競爭
  • 讀取使用者空間記憶體時的核心死鎖
  • 核心中 x86 斷點插入的資料競爭

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

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

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

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

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