精選文章

Photo by Philip Brown

動態追蹤技術漫談

動態追蹤技術漫談

Photo by OpenResty Inc.

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

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

二進位制漏洞掃描:識別 Backport 補丁,消除誤報

二進位制漏洞掃描:識別 Backport 補丁,消除誤報

二進位制漏洞掃描:識別 Backport 補丁,消除誤報

OpenResty XRay 是甚麼

OpenResty XRay 是甚麼

OpenResty XRay 是甚麼

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失與 -O0 編譯選項的根因定位

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失與 -O0 編譯選項的根因定位

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失與 -O0 編譯選項的根因定位

Photo by 章亦春

無侵入式 Java 探針:生產環境無 Java Agent 捕獲方法引數

無侵入式 Java 探針:生產環境無 Java Agent 捕獲方法引數

Photo by Jose G. Ortega Castro

OpenResty 和 Nginx 的共享記憶體區是如何消耗實體記憶體的

OpenResty 和 Nginx 的共享記憶體區是如何消耗實體記憶體的

Photo by Harrison Broadbent

OpenResty 和 Nginx 如何分配和管理記憶體

OpenResty 和 Nginx 如何分配和管理記憶體

藉助 OpenResty XRay,顯著最佳化效能,CPU 使用率立減  90%
藉助 OpenResty XRay,顯著最佳化效能,CPU 使用率立減 90%
申請免費試用

最新文章

OpenResty XRay 如何用 Node.js 函式探針實現監控新正規化

  • 為甚麼你需要無侵入式函式探針的新正規化?
  • 實戰演示:監控函式引數
  • 頂尖團隊如何利用無侵入式探針提升研發效能?
  • 總結
Photo by 章亦春
  • 為甚麼你需要無侵入式函式探針的新正規化?
  • 實戰演示:監控函式引數
  • 頂尖團隊如何利用無侵入式探針提升研發效能?
  • 總結

Nginx Worker 程序 RPS 上不去:追蹤到 75 毫秒的事件迴圈阻塞

  • 負載很高卻沒幹活:缺失 worker_cpu_affinity 導致的 CPU 爭搶
  • 阻塞的 Lua IO 操作如何拖停 Nginx 事件迴圈
  • 量化檔案 IO 延時:單次最高 1.5 毫秒
  • Nginx 事件迴圈阻塞有多嚴重?43952 個樣本、最大 75 毫秒
  • 常見問題
  • 負載很高卻沒幹活:缺失 worker_cpu_affinity 導致的 CPU 爭搶
  • 阻塞的 Lua IO 操作如何拖停 Nginx 事件迴圈
  • 量化檔案 IO 延時:單次最高 1.5 毫秒
  • Nginx 事件迴圈阻塞有多嚴重?43952 個樣本、最大 75 毫秒
  • 常見問題

零侵入 Node.js CPU 效能分析:火焰圖實戰

  • Node.js 應用中的高 CPU 使用率問題
  • Node.js 應用中的 CPU 阻塞問題
  • 支援的 Node.js 版本和作業系統
  • 效能影響和額外負擔
  • 下一步的計劃
Photo by 章亦春
  • Node.js 應用中的高 CPU 使用率問題
  • Node.js 應用中的 CPU 阻塞問題
  • 支援的 Node.js 版本和作業系統
  • 效能影響和額外負擔
  • 下一步的計劃

從崩潰到根因:OpenResty XRay 如何將 Nginx 記憶體踩踏問題分析得明明白白

  • 案例背景:日誌無法解釋的 Nginx worker 程序頻繁崩潰
  • 分析錄製檔案:把崩潰過程回放回“第一現場”
  • 根因:Nginx 連線生命週期中的 Use-After-Free
  • 常見問題(FAQ)
  • 案例背景:日誌無法解釋的 Nginx worker 程序頻繁崩潰
  • 分析錄製檔案:把崩潰過程回放回“第一現場”
  • 根因:Nginx 連線生命週期中的 Use-After-Free
  • 常見問題(FAQ)

UDB + OpenResty XRay:解鎖 OpenResty 應用效能之謎

  • OpenResty XRay 如何協同 UDB 增效
  • 實戰:使用 UDB 與 OpenResty XRay 分析 OpenResty 應用的 Lua 程式碼呼叫棧
  • 時間旅行除錯的優勢
Photo by 章亦春
  • OpenResty XRay 如何協同 UDB 增效
  • 實戰:使用 UDB 與 OpenResty XRay 分析 OpenResty 應用的 Lua 程式碼呼叫棧
  • 時間旅行除錯的優勢

如何用時間旅行呼叫棧除錯 Java 檔案 I/O

  • IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
  • 從 native write() 系統呼叫重建完整的 Java 呼叫棧
  • 用時間旅行回放一步步除錯 Java 檔案 I/O
  • 常見問題
Photo by 章亦春
  • IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
  • 從 native write() 系統呼叫重建完整的 Java 呼叫棧
  • 用時間旅行回放一步步除錯 Java 檔案 I/O
  • 常見問題

追蹤 OpenResty 中 LRU 快取引發的記憶體洩漏 —— 根因竟是快取的 SSL 證書

  • 為甚麼一個低流量的 OpenResty 應用會持續洩漏記憶體
  • 一步步追蹤 LRU 快取記憶體洩漏的完整過程
  • 最終結果:從無限增長到記憶體平穩
  • 為甚麼一個低流量的 OpenResty 應用會持續洩漏記憶體
  • 一步步追蹤 LRU 快取記憶體洩漏的完整過程
  • 最終結果:從無限增長到記憶體平穩

Nginx Worker CPU 佔用不均:定位未啟用 reuseport 與 cjson 解析瓶頸

  • 症狀:部分 Nginx Worker 程序 CPU 打滿,其餘接近空閒
  • OpenResty XRay 如何定位根因
  • 修復:三項最佳化與各自的實測收益
  • 總結:OpenResty XRay 幾分鐘內的發現
  • 常見問題
  • 症狀:部分 Nginx Worker 程序 CPU 打滿,其餘接近空閒
  • OpenResty XRay 如何定位根因
  • 修復:三項最佳化與各自的實測收益
  • 總結:OpenResty XRay 幾分鐘內的發現
  • 常見問題

動態追蹤的瑞士軍刀:Y 語言如何讓動態追蹤不再複雜

  • 行業痛點:為甚麼我們迫切需要一門全新的追蹤語言?
  • 技術硬實力:Y 語言憑甚麼敢說“革命性”?
  • Y 語言語法:熟悉的 C,更強大的追蹤能力
  • 殺手級應用場景:解決傳統工具無法解決的問題
  • 全平臺支援:沒有 Y 語言到不了的地方
  • 行業痛點:為甚麼我們迫切需要一門全新的追蹤語言?
  • 技術硬實力:Y 語言憑甚麼敢說“革命性”?
  • Y 語言語法:熟悉的 C,更強大的追蹤能力
  • 殺手級應用場景:解決傳統工具無法解決的問題
  • 全平臺支援:沒有 Y 語言到不了的地方

深入動態追蹤技術:OpenResty XRay 如何徹底改變問題診斷方式

  • 動態追蹤:解決複雜系統問題的利器
  • 為甚麼選擇 OpenResty XRay?
  • 產品聚焦:XRay 在真實場景中的應用案例
  • 常見誤區與 FAQ
  • 動態追蹤:解決複雜系統問題的利器
  • 為甚麼選擇 OpenResty XRay?
  • 產品聚焦:XRay 在真實場景中的應用案例
  • 常見誤區與 FAQ

日誌、埋點、A/B 測試都不夠用了?你該瞭解”動態追蹤”

  • 傳統方法 vs 動態追蹤:效率與控制力的革命
  • 動態追蹤:系統的“透視眼”
  • 從火焰圖到系統全景
  • 為甚麼選擇 OpenResty XRay?
  • 動態追蹤的新邊界
  • 傳統方法 vs 動態追蹤:效率與控制力的革命
  • 動態追蹤:系統的“透視眼”
  • 從火焰圖到系統全景
  • 為甚麼選擇 OpenResty XRay?
  • 動態追蹤的新邊界

可觀測性的下一站:OpenResty XRay 如何重新定義問題排查

  • 現代軟體架構下的問題排查為何越來越難?
  • 趨勢洞察:可觀測技術的未來
  • 動態追蹤技術是如何打通抽象層的
  • 實戰案例:線上上 Kong 服務中實時統計外掛資源消耗
  • 現代軟體架構下的問題排查為何越來越難?
  • 趨勢洞察:可觀測技術的未來
  • 動態追蹤技術是如何打通抽象層的
  • 實戰案例:線上上 Kong 服務中實時統計外掛資源消耗

生產環境記憶體洩漏定位:從 RSS 飆升到原始碼行號的分層歸因

  • 症狀:只升不降的記憶體曲線
  • 記憶體洩漏還是記憶體佔用高?
  • 四類洩漏模式的真實根因鏈
  • 看起來在漲,其實不是洩漏
  • 如何定位洩漏:自頂向下的分層歸因
  • 傳統工具為甚麼在生產環境裡不夠用
  • 常見問題
  • 症狀:只升不降的記憶體曲線
  • 記憶體洩漏還是記憶體佔用高?
  • 四類洩漏模式的真實根因鏈
  • 看起來在漲,其實不是洩漏
  • 如何定位洩漏:自頂向下的分層歸因
  • 傳統工具為甚麼在生產環境裡不夠用
  • 常見問題

Off-CPU 分析實戰:CPU 使用率低但延遲高的四類根因與定位方法

  • Off-CPU 時間是甚麼?
  • 症狀:CPU 使用率上不去,請求卻在排隊
  • 四類 Off-CPU 根因的真實根因鏈
  • 如何量化 Off-CPU 時間
  • On-CPU + Off-CPU = 掛鐘時間:全域性視角與工具生態
  • 常見問題
  • Off-CPU 時間是甚麼?
  • 症狀:CPU 使用率上不去,請求卻在排隊
  • 四類 Off-CPU 根因的真實根因鏈
  • 如何量化 Off-CPU 時間
  • On-CPU + Off-CPU = 掛鐘時間:全域性視角與工具生態
  • 常見問題

不改程式碼、不重啟服務:OpenResty XRay 如何對生產環境做全棧動態追蹤

  • 現有動態追蹤框架的技術權衡與生產環境侷限性
  • OpenResty XRay 的動態追蹤架構級突破
  • 全棧火焰圖
  • 能力邊界的持續擴充套件
  • 現有動態追蹤框架的技術權衡與生產環境侷限性
  • OpenResty XRay 的動態追蹤架構級突破
  • 全棧火焰圖
  • 能力邊界的持續擴充套件

OpenResty XRay 是甚麼

  • 以“零侵入”重構生產環境效能分析
  • 將海量遙測資料轉化為可執行的洞察
  • 適應彈性架構的無感觀測能力
  • 賦能高可用架構的長期主義
  • 以“零侵入”重構生產環境效能分析
  • 將海量遙測資料轉化為可執行的洞察
  • 適應彈性架構的無感觀測能力
  • 賦能高可用架構的長期主義

一次無法重啟的 Nginx 記憶體洩漏,我們是如何在生產環境把它抓出來的

  • 一次生產環境記憶體洩漏的完整解剖
  • 為甚麼這類問題幾乎無解?
  • 從“靠運氣”到“可預測”
  • 當效能問題超越“工具”範疇”
  • 一次生產環境記憶體洩漏的完整解剖
  • 為甚麼這類問題幾乎無解?
  • 從“靠運氣”到“可預測”
  • 當效能問題超越“工具”範疇”

Nginx 反向代理 QPS 暴跌 15 倍:upstream keepalive 缺失與 -O0 編譯選項的根因定位

  • Nginx 反向代理慢 15 倍,日誌卻零報錯
  • 火焰圖暴露連線風暴:upstream keepalive 缺失
  • 剩下的 10% 差距:基線對比指向編譯器
  • -O0 除錯編譯如何吃掉我們 10% 的效能
  • 15 倍 QPS 差異的工程性覆盤
  • Nginx 反向代理慢 15 倍,日誌卻零報錯
  • 火焰圖暴露連線風暴:upstream keepalive 缺失
  • 剩下的 10% 差距:基線對比指向編譯器
  • -O0 除錯編譯如何吃掉我們 10% 的效能
  • 15 倍 QPS 差異的工程性覆盤

我們如何在一個 500k QPS 的 OpenResty 閘道器中定位 244 毫秒的效能異常

  • 被健康平均值掩蓋的延遲尖刺與 CPU 浪費
  • 無需改程式碼、無需重啟:OpenResty 延遲問題排查
  • 最佳化結果:延遲毛刺消除,CPU 使用率下降 30%
  • 常見問題
  • 被健康平均值掩蓋的延遲尖刺與 CPU 浪費
  • 無需改程式碼、無需重啟:OpenResty 延遲問題排查
  • 最佳化結果:延遲毛刺消除,CPU 使用率下降 30%
  • 常見問題

如何在生產環境中定位 Java 記憶體洩漏——無需堆轉儲、無需重啟

  • 為甚麼多次 Full GC 後堆記憶體仍未回落
  • 如何在不匯出堆轉儲的情況下定位生產環境的 Java 記憶體洩漏
  • 如何定位 Java 記憶體洩漏:一套可複用的三步法
  • 為甚麼用 OpenResty XRay 定位 Java 記憶體洩漏
  • 常見問題
  • 為甚麼多次 Full GC 後堆記憶體仍未回落
  • 如何在不匯出堆轉儲的情況下定位生產環境的 Java 記憶體洩漏
  • 如何定位 Java 記憶體洩漏:一套可複用的三步法
  • 為甚麼用 OpenResty XRay 定位 Java 記憶體洩漏
  • 常見問題

Gzip CPU 佔用過高的根因:壓縮級別 6 吃掉了 54% 的 CPU

  • Gzip 壓縮如何在生產環境中吃掉了 54% 的 CPU
  • Gzip CPU 佔用為何如此之高:配置級根因診斷
  • 量化 Gzip 與 Brotli 的 CPU 開銷
  • 從憑感覺到資料驅動的壓縮調優
  • Gzip 壓縮如何在生產環境中吃掉了 54% 的 CPU
  • Gzip CPU 佔用為何如此之高:配置級根因診斷
  • 量化 Gzip 與 Brotli 的 CPU 開銷
  • 從憑感覺到資料驅動的壓縮調優

Nginx C++ 模組記憶體洩漏:生產環境不重啟定位根因

  • 生產環境難題:無法用 GDB 除錯的 C++ 模組記憶體洩漏
  • 火焰圖如何鎖定 ngx_dubbo_module 中的洩漏函式
  • 從被動應對到主動賦能:XRay 帶來的排障新閉環
  • 總結
  • 生產環境難題:無法用 GDB 除錯的 C++ 模組記憶體洩漏
  • 火焰圖如何鎖定 ngx_dubbo_module 中的洩漏函式
  • 從被動應對到主動賦能:XRay 帶來的排障新閉環
  • 總結

OpenResty XRay 如何用 Node.js 函式探針實現監控新正規化

  • 為甚麼你需要無侵入式函式探針的新正規化?
  • 實戰演示:監控函式引數
  • 頂尖團隊如何利用無侵入式探針提升研發效能?
  • 總結
Photo by 章亦春
  • 為甚麼你需要無侵入式函式探針的新正規化?
  • 實戰演示:監控函式引數
  • 頂尖團隊如何利用無侵入式探針提升研發效能?
  • 總結

Nginx Worker 程序 RPS 上不去:追蹤到 75 毫秒的事件迴圈阻塞

  • 負載很高卻沒幹活:缺失 worker_cpu_affinity 導致的 CPU 爭搶
  • 阻塞的 Lua IO 操作如何拖停 Nginx 事件迴圈
  • 量化檔案 IO 延時:單次最高 1.5 毫秒
  • Nginx 事件迴圈阻塞有多嚴重?43952 個樣本、最大 75 毫秒
  • 常見問題
  • 負載很高卻沒幹活:缺失 worker_cpu_affinity 導致的 CPU 爭搶
  • 阻塞的 Lua IO 操作如何拖停 Nginx 事件迴圈
  • 量化檔案 IO 延時:單次最高 1.5 毫秒
  • Nginx 事件迴圈阻塞有多嚴重?43952 個樣本、最大 75 毫秒
  • 常見問題

零侵入 Node.js CPU 效能分析:火焰圖實戰

  • Node.js 應用中的高 CPU 使用率問題
  • Node.js 應用中的 CPU 阻塞問題
  • 支援的 Node.js 版本和作業系統
  • 效能影響和額外負擔
  • 下一步的計劃
Photo by 章亦春
  • Node.js 應用中的高 CPU 使用率問題
  • Node.js 應用中的 CPU 阻塞問題
  • 支援的 Node.js 版本和作業系統
  • 效能影響和額外負擔
  • 下一步的計劃

從崩潰到根因:OpenResty XRay 如何將 Nginx 記憶體踩踏問題分析得明明白白

  • 案例背景:日誌無法解釋的 Nginx worker 程序頻繁崩潰
  • 分析錄製檔案:把崩潰過程回放回“第一現場”
  • 根因:Nginx 連線生命週期中的 Use-After-Free
  • 常見問題(FAQ)
  • 案例背景:日誌無法解釋的 Nginx worker 程序頻繁崩潰
  • 分析錄製檔案:把崩潰過程回放回“第一現場”
  • 根因:Nginx 連線生命週期中的 Use-After-Free
  • 常見問題(FAQ)

UDB + OpenResty XRay:解鎖 OpenResty 應用效能之謎

  • OpenResty XRay 如何協同 UDB 增效
  • 實戰:使用 UDB 與 OpenResty XRay 分析 OpenResty 應用的 Lua 程式碼呼叫棧
  • 時間旅行除錯的優勢
Photo by 章亦春
  • OpenResty XRay 如何協同 UDB 增效
  • 實戰:使用 UDB 與 OpenResty XRay 分析 OpenResty 應用的 Lua 程式碼呼叫棧
  • 時間旅行除錯的優勢

如何用時間旅行呼叫棧除錯 Java 檔案 I/O

  • IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
  • 從 native write() 系統呼叫重建完整的 Java 呼叫棧
  • 用時間旅行回放一步步除錯 Java 檔案 I/O
  • 常見問題
Photo by 章亦春
  • IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
  • 從 native write() 系統呼叫重建完整的 Java 呼叫棧
  • 用時間旅行回放一步步除錯 Java 檔案 I/O
  • 常見問題

追蹤 OpenResty 中 LRU 快取引發的記憶體洩漏 —— 根因竟是快取的 SSL 證書

  • 為甚麼一個低流量的 OpenResty 應用會持續洩漏記憶體
  • 一步步追蹤 LRU 快取記憶體洩漏的完整過程
  • 最終結果:從無限增長到記憶體平穩
  • 為甚麼一個低流量的 OpenResty 應用會持續洩漏記憶體
  • 一步步追蹤 LRU 快取記憶體洩漏的完整過程
  • 最終結果:從無限增長到記憶體平穩

Nginx Worker CPU 佔用不均:定位未啟用 reuseport 與 cjson 解析瓶頸

  • 症狀:部分 Nginx Worker 程序 CPU 打滿,其餘接近空閒
  • OpenResty XRay 如何定位根因
  • 修復:三項最佳化與各自的實測收益
  • 總結:OpenResty XRay 幾分鐘內的發現
  • 常見問題
  • 症狀:部分 Nginx Worker 程序 CPU 打滿,其餘接近空閒
  • OpenResty XRay 如何定位根因
  • 修復:三項最佳化與各自的實測收益
  • 總結:OpenResty XRay 幾分鐘內的發現
  • 常見問題

動態追蹤的瑞士軍刀:Y 語言如何讓動態追蹤不再複雜

  • 行業痛點:為甚麼我們迫切需要一門全新的追蹤語言?
  • 技術硬實力:Y 語言憑甚麼敢說“革命性”?
  • Y 語言語法:熟悉的 C,更強大的追蹤能力
  • 殺手級應用場景:解決傳統工具無法解決的問題
  • 全平臺支援:沒有 Y 語言到不了的地方
  • 行業痛點:為甚麼我們迫切需要一門全新的追蹤語言?
  • 技術硬實力:Y 語言憑甚麼敢說“革命性”?
  • Y 語言語法:熟悉的 C,更強大的追蹤能力
  • 殺手級應用場景:解決傳統工具無法解決的問題
  • 全平臺支援:沒有 Y 語言到不了的地方

深入動態追蹤技術:OpenResty XRay 如何徹底改變問題診斷方式

  • 動態追蹤:解決複雜系統問題的利器
  • 為甚麼選擇 OpenResty XRay?
  • 產品聚焦:XRay 在真實場景中的應用案例
  • 常見誤區與 FAQ
  • 動態追蹤:解決複雜系統問題的利器
  • 為甚麼選擇 OpenResty XRay?
  • 產品聚焦:XRay 在真實場景中的應用案例
  • 常見誤區與 FAQ

日誌、埋點、A/B 測試都不夠用了?你該瞭解”動態追蹤”

  • 傳統方法 vs 動態追蹤:效率與控制力的革命
  • 動態追蹤:系統的“透視眼”
  • 從火焰圖到系統全景
  • 為甚麼選擇 OpenResty XRay?
  • 動態追蹤的新邊界
  • 傳統方法 vs 動態追蹤:效率與控制力的革命
  • 動態追蹤:系統的“透視眼”
  • 從火焰圖到系統全景
  • 為甚麼選擇 OpenResty XRay?
  • 動態追蹤的新邊界

可觀測性的下一站:OpenResty XRay 如何重新定義問題排查

  • 現代軟體架構下的問題排查為何越來越難?
  • 趨勢洞察:可觀測技術的未來
  • 動態追蹤技術是如何打通抽象層的
  • 實戰案例:線上上 Kong 服務中實時統計外掛資源消耗
  • 現代軟體架構下的問題排查為何越來越難?
  • 趨勢洞察:可觀測技術的未來
  • 動態追蹤技術是如何打通抽象層的
  • 實戰案例:線上上 Kong 服務中實時統計外掛資源消耗

OpenResty XRay 助力指令碼效能提升 44 倍

  • 真實案例:從發現瓶頸到顯著提速
  • OpenResty XRay 的工作原理
  • 最佳化效果
  • 支適用場景與實踐建議
Photo by 章亦春
  • 真實案例:從發現瓶頸到顯著提速
  • OpenResty XRay 的工作原理
  • 最佳化效果
  • 支適用場景與實踐建議

OpenResty XRay 的 Web 控制檯快速導覽

  • Insight 頁面介紹
  • 自動報告詳情
  • Dashboard 效能指標儀表盤
  • 使用 Guided Analysis 線上分析
  • 系統設定與配置頁
  • Insight 頁面介紹
  • 自動報告詳情
  • Dashboard 效能指標儀表盤
  • 使用 Guided Analysis 線上分析
  • 系統設定與配置頁

OpenResty XRay 移動端應用介紹

  • 下載和安裝 OpenResty XRay 安卓版
  • 登入到 OpenResty XRay
  • 全自動分析報告
  • 在 dashboard 頁面檢視效能圖表資料
  • 引導式分析功能
  • 下載和安裝 OpenResty XRay 安卓版
  • 登入到 OpenResty XRay
  • 全自動分析報告
  • 在 dashboard 頁面檢視效能圖表資料
  • 引導式分析功能

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 正則效能

動態追蹤技術漫談

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

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

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

定位 Go 應用 CPU 最熱的程式碼路徑:Prometheus 高 CPU 例項分析(OpenResty XRay)

  • 問題:高 CPU 使用率
  • 使用 OpenResty XRay 的引導式分析功能定位 CPU 最熱的 Go 程式碼路徑
  • 全自動分析與報告
  • 問題:高 CPU 使用率
  • 使用 OpenResty XRay 的引導式分析功能定位 CPU 最熱的 Go 程式碼路徑
  • 全自動分析與報告

Go 服務 CPU 使用率異常低:對執行中程序做 off-CPU 分析定位阻塞根因

  • 症狀:請求湧入,Go 服務 CPU 使用率卻上不去
  • 用 OpenResty XRay 對執行中的 Go 程序做 off-CPU 分析
  • 根因:一行阻塞的 shell 命令呼叫
  • 全自動分析與日報、週報
  • 症狀:請求湧入,Go 服務 CPU 使用率卻上不去
  • 用 OpenResty XRay 對執行中的 Go 程序做 off-CPU 分析
  • 根因:一行阻塞的 shell 命令呼叫
  • 全自動分析與日報、週報

Django 記憶體分析:逐個物件剖析執行中應用的記憶體佔用(使用 OpenResty XRay)

  • 用 ps 找出記憶體佔用高的 Django 程序
  • 用引導式分析剖析 Django 應用的記憶體使用
  • 讀懂火焰圖:哪個 Python 模組佔用記憶體最多
  • 用 Insights 自動監控 Django 記憶體使用
  • 關於 OpenResty XRay
  • 用 ps 找出記憶體佔用高的 Django 程序
  • 用引導式分析剖析 Django 應用的記憶體使用
  • 讀懂火焰圖:哪個 Python 模組佔用記憶體最多
  • 用 Insights 自動監控 Django 記憶體使用
  • 關於 OpenResty XRay

Python 記憶體分析器:無需改程式碼定位最佔記憶體的物件

  • 找出哪個 Python 程序最佔記憶體
  • 用引導式分析剖析 Python 記憶體:定位最大的物件及其所屬模組
  • 用定時報告自動監控 Python 記憶體佔用
  • 關於 OpenResty XRay
  • 找出哪個 Python 程序最佔記憶體
  • 用引導式分析剖析 Python 記憶體:定位最大的物件及其所屬模組
  • 用定時報告自動監控 Python 記憶體佔用
  • 關於 OpenResty XRay

Python 程序 CPU 使用率只有 8%:off-CPU 分析定位阻塞的 subprocess.run 呼叫

  • 症狀:請求湧入但 Python 程序 CPU 使用率上不去
  • 用 OpenResty XRay 的引導式分析定位阻塞的 Python 程式碼路徑
  • Insights 頁面中的全自動分析與報告
  • FAQ
  • 症狀:請求湧入但 Python 程序 CPU 使用率上不去
  • 用 OpenResty XRay 的引導式分析定位阻塞的 Python 程式碼路徑
  • Insights 頁面中的全自動分析與報告
  • FAQ

無侵入式 Java 探針:生產環境無 Java Agent 捕獲方法引數

  • 為甚麼無侵入式 Java 探針在生產環境很重要
  • 實戰演示:在生產環境捕獲 Java 方法引數
  • OpenResty XRay 與常見 Java Profiler 的差異
  • 常見問題
Photo by 章亦春
  • 為甚麼無侵入式 Java 探針在生產環境很重要
  • 實戰演示:在生產環境捕獲 Java 方法引數
  • OpenResty XRay 與常見 Java Profiler 的差異
  • 常見問題

Java Tomcat 響應慢:用單請求 PCAP 精準定位慢請求

  • 診斷 Tomcat 響應慢,精準捕獲慢請求
  • 選擇性抓包:按響應時間、狀態碼、路徑過濾
  • 每個慢請求單獨下載對應 PCAP 包
  • 區分服務端延遲與網路延遲
  • 支援 Spring Boot 內嵌 Tomcat 場景
Photo by 章亦春
  • 診斷 Tomcat 響應慢,精準捕獲慢請求
  • 選擇性抓包:按響應時間、狀態碼、路徑過濾
  • 每個慢請求單獨下載對應 PCAP 包
  • 區分服務端延遲與網路延遲
  • 支援 Spring Boot 內嵌 Tomcat 場景

Java 應用效能剖析:CPU、Off-CPU 與磁碟 I/O 分析(無 Safepoint 偏差)

  • 用火焰圖剖析 Java CPU 熱點
  • Off-CPU Java 效能分析:鎖等待與阻塞診斷
  • Java 磁碟 I/O 剖析:追蹤檔案與套接字寫入
  • 支援 OpenJDK 8/11/17/21 應用剖析
  • 自動化取樣與專家分析
  • 效能影響與開銷
  • 常見問題
Photo by 章亦春
  • 用火焰圖剖析 Java CPU 熱點
  • Off-CPU Java 效能分析:鎖等待與阻塞診斷
  • Java 磁碟 I/O 剖析:追蹤檔案與套接字寫入
  • 支援 OpenJDK 8/11/17/21 應用剖析
  • 自動化取樣與專家分析
  • 效能影響與開銷
  • 常見問題

Perl 程序 CPU 使用率只有 13%:off-CPU 火焰圖定位阻塞的 HTTP 呼叫

  • 症狀:請求湧入但 Perl 程序 CPU 使用率上不去
  • 用 OpenResty XRay 的 off-CPU 火焰圖定位阻塞的 Perl 程式碼路徑
  • Insights 頁面中的全自動分析與報告
  • FAQ
  • 症狀:請求湧入但 Perl 程序 CPU 使用率上不去
  • 用 OpenResty XRay 的 off-CPU 火焰圖定位阻塞的 Perl 程式碼路徑
  • Insights 頁面中的全自動分析與報告
  • FAQ

線上定位 Perl 程序中最大的記憶體物件

  • 症狀:top 裡某個 Perl 程序記憶體佔用過高
  • 用 OpenResty XRay 引導式分析定位最大的 Perl 物件
  • 把最大的物件追溯回原始碼檔案
  • 用 Insights 報告自動監控 Perl 程序記憶體
  • 常見問題(FAQ)
  • 關於 OpenResty XRay
  • 症狀:top 裡某個 Perl 程序記憶體佔用過高
  • 用 OpenResty XRay 引導式分析定位最大的 Perl 物件
  • 把最大的物件追溯回原始碼檔案
  • 用 Insights 報告自動監控 Perl 程序記憶體
  • 常見問題(FAQ)
  • 關於 OpenResty XRay

Perl 高 CPU 使用率:火焰圖定位正規表示式熱點(100% CPU 實戰排查)

  • 問題: 高 CPU 使用率
  • 使用 OpenResty XRay 的引導式分析功能定位最熱的 Perl 程式碼路徑
  • 全自動分析與報告
  • 問題: 高 CPU 使用率
  • 使用 OpenResty XRay 的引導式分析功能定位最熱的 Perl 程式碼路徑
  • 全自動分析與報告

Rust 程序硬碟 I/O 高的原因定位方法

  • 定位硬碟 I/O 高的 Rust 程序
  • 使用火焰圖追蹤 Rust 磁碟寫入熱點程式碼路徑
  • 自動磁碟 I/O 分析報告
  • 常見問題
  • 定位硬碟 I/O 高的 Rust 程序
  • 使用火焰圖追蹤 Rust 磁碟寫入熱點程式碼路徑
  • 自動磁碟 I/O 分析報告
  • 常見問題

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

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

Erlang 高 CPU 使用率:透過火焰圖追蹤 PCRE 正則瓶頸

  • 觀察 Erlang 程序 CPU 使用率超過 200%
  • 使用 OpenResty XRay 分析 Erlang CPU 使用率
  • C 語言級別分析:erts_pcre_exec 與 PCRE 回溯
  • PCRE 正則回溯在 BEAM VM 中為何代價高昂
  • 自動監控與報告
  • 常見問題:Erlang 高 CPU 使用率
  • 觀察 Erlang 程序 CPU 使用率超過 200%
  • 使用 OpenResty XRay 分析 Erlang CPU 使用率
  • C 語言級別分析:erts_pcre_exec 與 PCRE 回溯
  • PCRE 正則回溯在 BEAM VM 中為何代價高昂
  • 自動監控與報告
  • 常見問題:Erlang 高 CPU 使用率

Nginx 報 No debugging symbols found?用 OpenResty XRay 自動重建除錯符號

  • 確認 Nginx 被 strip、除錯符號缺失
  • 自動重建缺失的 Nginx 除錯符號——無需重新編譯
  • 持續分析:每日與每週 Insights 報告
  • 常見問題:nginx-dbg、重新編譯與分析 strip 過的二進位制
  • 確認 Nginx 被 strip、除錯符號缺失
  • 自動重建缺失的 Nginx 除錯符號——無需重新編譯
  • 持續分析:每日與每週 Insights 報告
  • 常見問題:nginx-dbg、重新編譯與分析 strip 過的二進位制

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

  • 定位崩潰的 OpenResty/Nginx worker 程序產生的 core dump 檔案
  • 在 OpenResty XRay 中啟動自動(引導式)core dump 分析
  • 解讀崩潰時的訊號、CPU 暫存器和 C 呼叫棧
  • 沿著 Lua 呼叫棧定位到精確的崩潰程式碼行
  • 針對線上 core dump 的自動 Insights 報告
  • 定位崩潰的 OpenResty/Nginx worker 程序產生的 core dump 檔案
  • 在 OpenResty XRay 中啟動自動(引導式)core dump 分析
  • 解讀崩潰時的訊號、CPU 暫存器和 C 呼叫棧
  • 沿著 Lua 呼叫棧定位到精確的崩潰程式碼行
  • 針對線上 core dump 的自動 Insights 報告

Envoy CPU 效能分析:用火焰圖定位 C++ 熱路徑

  • 場景:Envoy 程序 CPU 佔用超 90%
  • 用 C++ 火焰圖分析 Envoy CPU 消耗
  • 持續 CPU 監控與自動化報告
  • 關於 OpenResty XRay
  • FAQ:Envoy CPU 效能分析
  • 場景:Envoy 程序 CPU 佔用超 90%
  • 用 C++ 火焰圖分析 Envoy CPU 消耗
  • 持續 CPU 監控與自動化報告
  • 關於 OpenResty XRay
  • FAQ:Envoy CPU 效能分析

llama.cpp CPU 佔用分析:400% 的 CPU 追蹤到 ggml 熱點函式

  • 執行 llama.cpp 並觀察到 400% 的 CPU 使用率
  • 使用 OpenResty XRay 剖析 llama.cpp 的 CPU 佔用
  • 分析結果:最熱的 C++ 程式碼路徑
  • 關於 OpenResty XRay
  • 執行 llama.cpp 並觀察到 400% 的 CPU 使用率
  • 使用 OpenResty XRay 剖析 llama.cpp 的 CPU 佔用
  • 分析結果:最熱的 C++ 程式碼路徑
  • 關於 OpenResty XRay

Ylang 生產實戰:容器追蹤、棧回溯與 Core Dump 分析(第四集,全四集)

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

Ylang:正規表示式、完整控制流與透明除錯符號處理(第三集,全四集)

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

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

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

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
  • 真正的非侵入式追蹤

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

  • 系統環境
  • 最耗 CPU 的請求主機名
  • 最耗 CPU 的請求 URI
  • 深入挖掘
  • 直接在 Web 控制檯中執行
  • 追蹤容器內的應用
  • 工具的實現方式
  • 工具的開銷
Photo by Yichun Zhang
  • 系統環境
  • 最耗 CPU 的請求主機名
  • 最耗 CPU 的請求 URI
  • 深入挖掘
  • 直接在 Web 控制檯中執行
  • 追蹤容器內的應用
  • 工具的實現方式
  • 工具的開銷

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

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

LuaJIT GC64 模式

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

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

成功傳送訊息!

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