精選文章
最新文章
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 帶來的排障新閉環
- 總結
無侵入式 Java 探針:生產環境無 Java Agent 捕獲方法引數
- 為甚麼無侵入式 Java 探針在生產環境很重要
- 實戰演示:在生產環境捕獲 Java 方法引數
- OpenResty XRay 與常見 Java Profiler 的差異
- 常見問題

- 為甚麼無侵入式 Java 探針在生產環境很重要
- 實戰演示:在生產環境捕獲 Java 方法引數
- OpenResty XRay 與常見 Java Profiler 的差異
- 常見問題
自動根因分析:OpenResty XRay 如何將故障精確定位到程式碼行
- 為甚麼“更多可觀測性資料”不等於“更快的根因分析”
- XRay 的自動根因分析與傳統監控有何不同?
- 自動根因分析實戰:三個生產環境案例
- 常見問題 FAQ

- 為甚麼“更多可觀測性資料”不等於“更快的根因分析”
- XRay 的自動根因分析與傳統監控有何不同?
- 自動根因分析實戰:三個生產環境案例
- 常見問題 FAQ
Perl 記憶體洩漏排查案例:數 GB 降至 60MB,一張火焰圖定位根因
- 精準定位記憶體洩漏根因
- 顯著的最佳化成效
- 延展閱讀
- 總結

- 精準定位記憶體洩漏根因
- 顯著的最佳化成效
- 延展閱讀
- 總結
Node.js 函式探針:不改程式碼捕獲執行中函式的實參
- 為甚麼要在不修改程式碼的前提下追蹤 Node.js 函式?
- 如何不改程式碼捕獲 Node.js 函式實參
- 團隊如何在生產環境使用無侵入式 Node.js 探針

- 為甚麼要在不修改程式碼的前提下追蹤 Node.js 函式?
- 如何不改程式碼捕獲 Node.js 函式實參
- 團隊如何在生產環境使用無侵入式 Node.js 探針
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 毫秒
- 常見問題
雙重瓶頸併發?OpenResty XRay 多維分析破解效能難題
- 整體 CPU 使用分析
- 深入模組內部分析
- 壓縮策略深度分析
- 分析結論
- 最佳化解決方案

- 整體 CPU 使用分析
- 深入模組內部分析
- 壓縮策略深度分析
- 分析結論
- 最佳化解決方案
零侵入 Node.js CPU 效能分析:火焰圖實戰
- Node.js 應用中的高 CPU 使用率問題
- Node.js 應用中的 CPU 阻塞問題
- 支援的 Node.js 版本和作業系統
- 效能影響和額外負擔
- 下一步的計劃

- 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 程式碼呼叫棧
- 時間旅行除錯的優勢

- OpenResty XRay 如何協同 UDB 增效
- 實戰:使用 UDB 與 OpenResty XRay 分析 OpenResty 應用的 Lua 程式碼呼叫棧
- 時間旅行除錯的優勢
UDB 與 OpenResty XRay 如何讓你看透 Perl 程式碼執行全過程
- UDB 是甚麼?
- 實戰:使用 OpenResty XRay 與 UDB 分析 Perl 應用的程式碼呼叫棧
- 為甚麼越來越多開發者選擇 UDB?

- UDB 是甚麼?
- 實戰:使用 OpenResty XRay 與 UDB 分析 Perl 應用的程式碼呼叫棧
- 為甚麼越來越多開發者選擇 UDB?
如何用時間旅行呼叫棧除錯 Java 檔案 I/O
- IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
- 從 native write() 系統呼叫重建完整的 Java 呼叫棧
- 用時間旅行回放一步步除錯 Java 檔案 I/O
- 常見問題

- IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
- 從 native write() 系統呼叫重建完整的 Java 呼叫棧
- 用時間旅行回放一步步除錯 Java 檔案 I/O
- 常見問題
結合 UDB 的時間旅行功能,揭秘 Python 程式碼執行過程
- UDB 在 Python 除錯中的獨特價值
- 結合 OpenResty XRay 增強除錯能力
- 實戰案例:分析 Python 網路請求的呼叫棧
- 總結

- UDB 在 Python 除錯中的獨特價值
- 結合 OpenResty XRay 增強除錯能力
- 實戰案例:分析 Python 網路請求的呼叫棧
- 總結
追蹤 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 重要突破:無侵入分析 Java 應用記憶體與 Envoy Lua 效能
- 無需侵入,徹底洞察 Java 應用記憶體
- 首次打通 Envoy 內 Lua 效能黑盒

- 無需侵入,徹底洞察 Java 應用記憶體
- 首次打通 Envoy 內 Lua 效能黑盒
為甚麼動態追蹤才是生產環境除錯的未來
- 現代軟體中看不見的危機
- 傳統工具為何會失效?
- 故障排除的新正規化:動態追蹤
- OpenResty XRay 的獨特之處

- 現代軟體中看不見的危機
- 傳統工具為何會失效?
- 故障排除的新正規化:動態追蹤
- OpenResty XRay 的獨特之處
P99 延遲:為甚麼平均值會騙人,以及如何診斷最慢的 1%
- 甚麼是 P99 延遲?
- P50 vs P95 vs P99:每個百分位告訴你甚麼
- 為甚麼平均延遲會騙人
- P99 延遲為甚麼高?根因譜系
- 如何診斷高 P99 延遲
- 如何降低 P99 延遲:修你查出來的問題
- 小結
- 常見問題

- 甚麼是 P99 延遲?
- P50 vs P95 vs P99:每個百分位告訴你甚麼
- 為甚麼平均延遲會騙人
- P99 延遲為甚麼高?根因譜系
- 如何診斷高 P99 延遲
- 如何降低 P99 延遲:修你查出來的問題
- 小結
- 常見問題
火焰圖詳解:如何讀懂 CPU 火焰圖,找出燒掉 CPU 的程式碼
- 甚麼是火焰圖:定義、座標軸與四條讀圖規則
- 怎樣讀火焰圖:plateau、tower、hair 形態與 self / total
- 三個真實案例:PHP preg_match、Go regexp.MustCompile、Erlang erts_pcre_exec
- 從 100% CPU 到罪魁程式碼行:四步排查流程與技術棧路由表
- 如何為你的技術棧生成火焰圖
- Icicle graph、flame chart 與其他變體
- AI 能替你讀火焰圖嗎?

- 甚麼是火焰圖:定義、座標軸與四條讀圖規則
- 怎樣讀火焰圖:plateau、tower、hair 形態與 self / total
- 三個真實案例:PHP preg_match、Go regexp.MustCompile、Erlang erts_pcre_exec
- 從 100% CPU 到罪魁程式碼行:四步排查流程與技術棧路由表
- 如何為你的技術棧生成火焰圖
- Icicle graph、flame chart 與其他變體
- AI 能替你讀火焰圖嗎?
生產環境記憶體洩漏定位:從 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 AI 助手:讓每一份分析資料都能開口說話
- 它和“把報告貼進 ChatGPT”有甚麼區別?
- 三個典型場景
- 常見問題:AI 能讀懂火焰圖嗎?解讀可靠嗎?

- 它和“把報告貼進 ChatGPT”有甚麼區別?
- 三個典型場景
- 常見問題:AI 能讀懂火焰圖嗎?解讀可靠嗎?
OpenResty 私有庫:高效能 Lua 與 Nginx 模組
- 完整目錄
- 按場景分類
- 許可方式
- 常見問題

- 完整目錄
- 按場景分類
- 許可方式
- 常見問題
不改程式碼、不重啟服務: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 記憶體洩漏
- 常見問題
當”黑盒”外掛吃掉 45% CPU,我們如何在無原始碼情況下定位到 Lua 第 93 行
- 當 perf 遇到“黑盒”
- 從取樣到全棧動態追蹤
- 拿到證據鏈
- 從“發生了甚麼”到“為甚麼”

- 當 perf 遇到“黑盒”
- 從取樣到全棧動態追蹤
- 拿到證據鏈
- 從“發生了甚麼”到“為甚麼”
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 如何將故障精確定位到程式碼行
- 為甚麼“更多可觀測性資料”不等於“更快的根因分析”
- XRay 的自動根因分析與傳統監控有何不同?
- 自動根因分析實戰:三個生產環境案例
- 常見問題 FAQ

- 為甚麼“更多可觀測性資料”不等於“更快的根因分析”
- XRay 的自動根因分析與傳統監控有何不同?
- 自動根因分析實戰:三個生產環境案例
- 常見問題 FAQ
Perl 記憶體洩漏排查案例:數 GB 降至 60MB,一張火焰圖定位根因
- 精準定位記憶體洩漏根因
- 顯著的最佳化成效
- 延展閱讀
- 總結

- 精準定位記憶體洩漏根因
- 顯著的最佳化成效
- 延展閱讀
- 總結
Node.js 函式探針:不改程式碼捕獲執行中函式的實參
- 為甚麼要在不修改程式碼的前提下追蹤 Node.js 函式?
- 如何不改程式碼捕獲 Node.js 函式實參
- 團隊如何在生產環境使用無侵入式 Node.js 探針

- 為甚麼要在不修改程式碼的前提下追蹤 Node.js 函式?
- 如何不改程式碼捕獲 Node.js 函式實參
- 團隊如何在生產環境使用無侵入式 Node.js 探針
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 毫秒
- 常見問題
雙重瓶頸併發?OpenResty XRay 多維分析破解效能難題
- 整體 CPU 使用分析
- 深入模組內部分析
- 壓縮策略深度分析
- 分析結論
- 最佳化解決方案

- 整體 CPU 使用分析
- 深入模組內部分析
- 壓縮策略深度分析
- 分析結論
- 最佳化解決方案
零侵入 Node.js CPU 效能分析:火焰圖實戰
- Node.js 應用中的高 CPU 使用率問題
- Node.js 應用中的 CPU 阻塞問題
- 支援的 Node.js 版本和作業系統
- 效能影響和額外負擔
- 下一步的計劃

- 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 程式碼呼叫棧
- 時間旅行除錯的優勢

- OpenResty XRay 如何協同 UDB 增效
- 實戰:使用 UDB 與 OpenResty XRay 分析 OpenResty 應用的 Lua 程式碼呼叫棧
- 時間旅行除錯的優勢
UDB 與 OpenResty XRay 如何讓你看透 Perl 程式碼執行全過程
- UDB 是甚麼?
- 實戰:使用 OpenResty XRay 與 UDB 分析 Perl 應用的程式碼呼叫棧
- 為甚麼越來越多開發者選擇 UDB?

- UDB 是甚麼?
- 實戰:使用 OpenResty XRay 與 UDB 分析 Perl 應用的程式碼呼叫棧
- 為甚麼越來越多開發者選擇 UDB?
如何用時間旅行呼叫棧除錯 Java 檔案 I/O
- IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
- 從 native write() 系統呼叫重建完整的 Java 呼叫棧
- 用時間旅行回放一步步除錯 Java 檔案 I/O
- 常見問題

- IDE 斷點和 coredump 在 Java 檔案 I/O 排查中的短板
- 從 native write() 系統呼叫重建完整的 Java 呼叫棧
- 用時間旅行回放一步步除錯 Java 檔案 I/O
- 常見問題
結合 UDB 的時間旅行功能,揭秘 Python 程式碼執行過程
- UDB 在 Python 除錯中的獨特價值
- 結合 OpenResty XRay 增強除錯能力
- 實戰案例:分析 Python 網路請求的呼叫棧
- 總結

- UDB 在 Python 除錯中的獨特價值
- 結合 OpenResty XRay 增強除錯能力
- 實戰案例:分析 Python 網路請求的呼叫棧
- 總結
追蹤 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 重要突破:無侵入分析 Java 應用記憶體與 Envoy Lua 效能
- 無需侵入,徹底洞察 Java 應用記憶體
- 首次打通 Envoy 內 Lua 效能黑盒

- 無需侵入,徹底洞察 Java 應用記憶體
- 首次打通 Envoy 內 Lua 效能黑盒
為甚麼動態追蹤才是生產環境除錯的未來
- 現代軟體中看不見的危機
- 傳統工具為何會失效?
- 故障排除的新正規化:動態追蹤
- OpenResty XRay 的獨特之處

- 現代軟體中看不見的危機
- 傳統工具為何會失效?
- 故障排除的新正規化:動態追蹤
- OpenResty XRay 的獨特之處
深入動態追蹤技術:OpenResty XRay 如何徹底改變問題診斷方式
- 動態追蹤:解決複雜系統問題的利器
- 為甚麼選擇 OpenResty XRay?
- 產品聚焦:XRay 在真實場景中的應用案例
- 常見誤區與 FAQ

- 動態追蹤:解決複雜系統問題的利器
- 為甚麼選擇 OpenResty XRay?
- 產品聚焦:XRay 在真實場景中的應用案例
- 常見誤區與 FAQ
日誌、埋點、A/B 測試都不夠用了?你該瞭解”動態追蹤”
- 傳統方法 vs 動態追蹤:效率與控制力的革命
- 動態追蹤:系統的“透視眼”
- 從火焰圖到系統全景
- 為甚麼選擇 OpenResty XRay?
- 動態追蹤的新邊界

- 傳統方法 vs 動態追蹤:效率與控制力的革命
- 動態追蹤:系統的“透視眼”
- 從火焰圖到系統全景
- 為甚麼選擇 OpenResty XRay?
- 動態追蹤的新邊界
可觀測性的下一站:OpenResty XRay 如何重新定義問題排查
- 現代軟體架構下的問題排查為何越來越難?
- 趨勢洞察:可觀測技術的未來
- 動態追蹤技術是如何打通抽象層的
- 實戰案例:線上上 Kong 服務中實時統計外掛資源消耗

- 現代軟體架構下的問題排查為何越來越難?
- 趨勢洞察:可觀測技術的未來
- 動態追蹤技術是如何打通抽象層的
- 實戰案例:線上上 Kong 服務中實時統計外掛資源消耗
為甚麼動態追蹤落地難?OpenResty XRay 如何破局?
- 動態追蹤技術的落地痛點
- OpenResty XRay:新一代動態追蹤解決方案
- 動態追蹤的未來

- 動態追蹤技術的落地痛點
- OpenResty XRay:新一代動態追蹤解決方案
- 動態追蹤的未來
從黑盒到白盒:OpenResty XRay 讓系統問題無所遁形
- OpenResty XRay:黑盒變白盒的動態追蹤利器
- 全方位多角度的分析能力
- 實際案例分享
- 產品願景

- OpenResty XRay:黑盒變白盒的動態追蹤利器
- 全方位多角度的分析能力
- 實際案例分享
- 產品願景
自我最佳化:OpenResty XRay 的效能蛻變
- 顯著的最佳化成果
- Ylang 語言:動態追蹤的理想工具
- 技術協同的典範

- 顯著的最佳化成果
- Ylang 語言:動態追蹤的理想工具
- 技術協同的典範
OpenResty XRay 助力指令碼效能提升 44 倍
- 真實案例:從發現瓶頸到顯著提速
- OpenResty XRay 的工作原理
- 最佳化效果
- 支適用場景與實踐建議

- 真實案例:從發現瓶頸到顯著提速
- OpenResty XRay 的工作原理
- 最佳化效果
- 支適用場景與實踐建議
跨介質資料結構漂移:OpenResty XRay 助力效能提升 20 倍
- 效能挑戰與突破
- 20 倍效能提升的實際意義
- 未來展望

- 效能挑戰與突破
- 20 倍效能提升的實際意義
- 未來展望
從 OOM 到 O(1):OpenResty 流式 JSON 解析器的實現之道
- JSONL 格式與傳統 JSON 的區別
- 解決方案
- 技術驗證
- 持續最佳化
- 技術啟示

- JSONL 格式與傳統 JSON 的區別
- 解決方案
- 技術驗證
- 持續最佳化
- 技術啟示
從數天到數小時:OpenResty XRay 如何讓 Linux shred 工具提速幾十倍
- 問題分析
- XRay 實戰效果
- 最佳化過程
- 應用價值
- 總結與展望

- 問題分析
- XRay 實戰效果
- 最佳化過程
- 應用價值
- 總結與展望
實戰分享:OpenResty XRay 讓 Ylang 編譯器效能翻倍
- 顯著的最佳化成果
- Ylang 語言:動態追蹤的理想工具
- 技術協同的典範

- 顯著的最佳化成果
- Ylang 語言:動態追蹤的理想工具
- 技術協同的典範
OpenResty XRay Web 控制檯:自動分析報告、實時儀表盤與引導式根因診斷
- Insights 頁面能看到甚麼
- 如何解讀分析報告
- Dashboard 展示哪些實時指標
- 用 Guided Analysis 診斷高 CPU 佔用
- 配置 OpenResty XRay 的 Agent
- 甚麼是 OpenResty XRay

- Insights 頁面能看到甚麼
- 如何解讀分析報告
- Dashboard 展示哪些實時指標
- 用 Guided Analysis 診斷高 CPU 佔用
- 配置 OpenResty XRay 的 Agent
- 甚麼是 OpenResty XRay
OpenResty XRay 移動端應用:在手機上監控與診斷線上應用(安卓 & iOS)
- 下載和安裝 OpenResty XRay 安卓版
- 登入到 OpenResty XRay
- 全自動分析報告
- 在 dashboard 頁面檢視效能圖表資料
- 引導式分析功能
- 常見問題

- 下載和安裝 OpenResty XRay 安卓版
- 登入到 OpenResty XRay
- 全自動分析報告
- 在 dashboard 頁面檢視效能圖表資料
- 引導式分析功能
- 常見問題
新的關於 OpenResty XRay 的常見問答
我們最近為 OpenResty XRay 產品準備了一篇《常見問答》文件

我們最近為 OpenResty XRay 產品準備了一篇《常見問答》文件
OpenResty XRay 的自動分析報告
- 過去
- 現在
- 將來

- 過去
- 現在
- 將來
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

- 甚麼是動態追蹤
- 動態追蹤的優點
- DTrace 與 SystemTap
- SystemTap 在生產上的應用
- 火焰圖
- 方法論
- 知識就是力量
- 開源與除錯符號
- Linux 核心的支援
- 硬體追蹤
- 死亡程序的遺骸分析
- 傳統的除錯技術
- 凌亂的除錯世界
- OpenResty XRay
在 Kubernetes 叢集上安裝 OpenResty XRay 的 Agent
- 登入控制檯
- 在 Kubernetes 叢集上安裝 Agent
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent

- 登入控制檯
- 在 Kubernetes 叢集上安裝 Agent
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent
在 Amazon Linux 上安裝 OpenResty XRay 的 Agent(使用 Bundle 包)
- 登入控制檯
- 透過 Bundle 包安裝 Agent
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent

- 登入控制檯
- 透過 Bundle 包安裝 Agent
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent
在 Ubuntu 上安裝 OpenResty XRay 的 Agent(使用 APT 包倉庫)
- 登入控制檯
- 透過 Deb 包安裝 Agent
- 檢查 Agent 狀態和日誌
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent

- 登入控制檯
- 透過 Deb 包安裝 Agent
- 檢查 Agent 狀態和日誌
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent
在 CentOs 上安裝 OpenResty XRay 的 Agent(使用 RPM 包倉庫)
- 登入控制檯
- 透過 RPM 包安裝 Agent
- 檢查 Agent 狀態和日誌
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent

- 登入控制檯
- 透過 RPM 包安裝 Agent
- 檢查 Agent 狀態和日誌
- 配置和檢測應用
- 啟動分析器和檢視分析結果
- 安裝另一個 Agent
在微軟 Azure 雲上安裝自主部署版 OpenResty XRay
- 建立訂閱和資源組
- 建立 Azure Kubernetes 服務
- 準備環境變數
- 透過命令列登入 Azure
- 為 Kubernetes 建立 namespace 和 secret
- 建立 Azure Disk
- 更新持久化卷的配置檔案
- 更新 kubernetes 的配置檔案
- 建立持久化卷
- 部署 Kubernetes 服務
- 配置應用閘道器

- 建立訂閱和資源組
- 建立 Azure Kubernetes 服務
- 準備環境變數
- 透過命令列登入 Azure
- 為 Kubernetes 建立 namespace 和 secret
- 建立 Azure Disk
- 更新持久化卷的配置檔案
- 更新 kubernetes 的配置檔案
- 建立持久化卷
- 部署 Kubernetes 服務
- 配置應用閘道器
在 Linux 上除錯 Go 服務的硬碟 I/O 高問題
- 定位硬碟 I/O 高的 Go 程序
- 使用火焰圖追蹤 Go 磁碟讀寫程式碼路徑
- 自動磁碟 I/O 分析報告
- 常見問題

- 定位硬碟 I/O 高的 Go 程序
- 使用火焰圖追蹤 Go 磁碟讀寫程式碼路徑
- 自動磁碟 I/O 分析報告
- 常見問題
生產環境如何追蹤 Go Panic(無需重啟應用)
- 使用引導式分析功能分析 Go 應用中的程式異常
- 全自動分析報告
- 常見問題

- 使用引導式分析功能分析 Go 應用中的程式異常
- 全自動分析報告
- 常見問題
定位 Go 應用 CPU 最熱的程式碼路徑:Prometheus 高 CPU 例項分析(OpenResty XRay)
- 問題:高 CPU 使用率
- 使用 OpenResty XRay 的引導式分析功能定位 CPU 最熱的 Go 程式碼路徑
- 全自動分析與報告

- 問題:高 CPU 使用率
- 使用 OpenResty XRay 的引導式分析功能定位 CPU 最熱的 Go 程式碼路徑
- 全自動分析與報告
CockroachDB 高 CPU 使用率:用火焰圖剖析執行中的 Go 服務
- 問題:CockroachDB 高 CPU 使用率
- 用引導式分析定位最耗 CPU 的 Go 程式碼路徑
- 全自動 CPU 分析報告
- 關於 OpenResty XRay

- 問題:CockroachDB 高 CPU 使用率
- 用引導式分析定位最耗 CPU 的 Go 程式碼路徑
- 全自動 CPU 分析報告
- 關於 OpenResty XRay
追蹤 Go 應用時 OpenResty XRay 對系統效能的影響
- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題

- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題
編寫自定義 Ylang 分析器動態追蹤 Go 程式(使用 OpenResty XRay)
- 向 Go 變數插入兩個鍵值對
- 編寫自定義 Ylang 分析器,動態追蹤 Go 程式
- 測試結果

- 向 Go 變數插入兩個鍵值對
- 編寫自定義 Ylang 分析器,動態追蹤 Go 程式
- 測試結果
etcd 高 CPU 使用率:用火焰圖定位最熱的 Go 程式碼路徑
- 問題症狀:etcd 佔用超過 70% 的 CPU 核心
- 使用 OpenResty XRay 引導式分析定位最熱的 Go 程式碼路徑
- etcd CPU 全自動監控與報告
- 甚麼是 OpenResty XRay

- 問題症狀:etcd 佔用超過 70% 的 CPU 核心
- 使用 OpenResty XRay 引導式分析定位最熱的 Go 程式碼路徑
- etcd CPU 全自動監控與報告
- 甚麼是 OpenResty XRay
Go 服務 CPU 使用率異常低:對執行中程序做 off-CPU 分析定位阻塞根因
- 症狀:請求湧入,Go 服務 CPU 使用率卻上不去
- 用 OpenResty XRay 對執行中的 Go 程序做 off-CPU 分析
- 根因:一行阻塞的 shell 命令呼叫
- 全自動分析與日報、週報

- 症狀:請求湧入,Go 服務 CPU 使用率卻上不去
- 用 OpenResty XRay 對執行中的 Go 程序做 off-CPU 分析
- 根因:一行阻塞的 shell 命令呼叫
- 全自動分析與日報、週報
Go 高 CPU 佔用:正規表示式編譯消耗了 36.8% 的 CPU 時間
- 觀察 Go 程序的高 CPU 佔用
- 使用 OpenResty XRay 剖析 Go 的 CPU 使用
- 全自動監控與報告
- 關於 OpenResty XRay

- 觀察 Go 程序的高 CPU 佔用
- 使用 OpenResty XRay 剖析 Go 的 CPU 使用
- 全自動監控與報告
- 關於 OpenResty XRay
使用 XRay 診斷 Python 應用的硬碟 I/O 高問題
- 定位硬碟 I/O 高的 Python 程序
- 使用火焰圖追蹤 Python 磁碟讀寫程式碼路徑
- 自動磁碟 I/O 分析報告
- 常見問題

- 定位硬碟 I/O 高的 Python 程序
- 使用火焰圖追蹤 Python 磁碟讀寫程式碼路徑
- 自動磁碟 I/O 分析報告
- 常見問題
生產環境實測:追蹤 Python 應用時 OpenResty XRay 對系統效能的影響
- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題

- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題
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 的差異
- 常見問題

- 為甚麼無侵入式 Java 探針在生產環境很重要
- 實戰演示:在生產環境捕獲 Java 方法引數
- OpenResty XRay 與常見 Java Profiler 的差異
- 常見問題
Java Tomcat 響應慢:用單請求 PCAP 精準定位慢請求
- 診斷 Tomcat 響應慢,精準捕獲慢請求
- 選擇性抓包:按響應時間、狀態碼、路徑過濾
- 每個慢請求單獨下載對應 PCAP 包
- 區分服務端延遲與網路延遲
- 支援 Spring Boot 內嵌 Tomcat 場景

- 診斷 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 應用剖析
- 自動化取樣與專家分析
- 效能影響與開銷
- 常見問題

- 用火焰圖剖析 Java CPU 熱點
- Off-CPU Java 效能分析:鎖等待與阻塞診斷
- Java 磁碟 I/O 剖析:追蹤檔案與套接字寫入
- 支援 OpenJDK 8/11/17/21 應用剖析
- 自動化取樣與專家分析
- 效能影響與開銷
- 常見問題
生產環境如何追蹤 Perl 異常(無需重啟應用)
- 使用引導式分析功能分析 Perl 應用中的程式異常
- 全自動分析報告
- 常見問題

- 使用引導式分析功能分析 Perl 應用中的程式異常
- 全自動分析報告
- 常見問題
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 應用時 OpenResty XRay 對系統效能的影響
- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題

- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題
線上定位 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 分析報告
- 常見問題
生產環境如何追蹤 Rust Panic(無需重啟應用)
- 使用引導式分析功能分析 Rust 應用中的程式異常
- 全自動分析報告
- 常見問題

- 使用引導式分析功能分析 Rust 應用中的程式異常
- 全自動分析報告
- 常見問題
生產環境實測:追蹤 Rust 應用時 OpenResty XRay 對系統效能的影響
- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題

- 分析期間對 CPU、記憶體和負載有何影響?
- 分析對吞吐量與延時的影響有多大?
- OpenResty XRay 與常駐式 APM Agent 的對比
- 常見問題
Rust CPU 剖析實戰:用 OpenResty XRay 找出 Sled 庫中最熱的程式碼路徑
- 問題:基於 Sled 的快取服務 CPU 使用率超過 100%
- 用引導式分析剖析執行中的 Rust 程序
- 解讀 Rust CPU 火焰圖:第一熱程式碼路徑
- 第二熱程式碼路徑:get_inner 與 view_for_key
- 全自動 Rust CPU 分析報告
- 常見問題

- 問題:基於 Sled 的快取服務 CPU 使用率超過 100%
- 用引導式分析剖析執行中的 Rust 程序
- 解讀 Rust CPU 火焰圖:第一熱程式碼路徑
- 第二熱程式碼路徑:get_inner 與 view_for_key
- 全自動 Rust CPU 分析報告
- 常見問題
從 AI 火焰圖分析到經驗證的修復:用 OpenResty XRay 驅動 Coding Agent 效能最佳化閉環
- 前提:目標機器上必須已安裝 OpenResty XRay
- coding agent 缺的不是智力,是執行時視野
- 三輪最佳化:336 → 4,457 → 26,028 → 29,968 RPS
- Lua + C 雙視角:為甚麼不要誤最佳化 writev
- 常見問題

- 前提:目標機器上必須已安裝 OpenResty XRay
- coding agent 缺的不是智力,是執行時視野
- 三輪最佳化:336 → 4,457 → 26,028 → 29,968 RPS
- Lua + C 雙視角:為甚麼不要誤最佳化 writev
- 常見問題
使用 C++ 動態追蹤 C++ 應用
- 設定目標 C++ 程式
- 編寫 C++(或 Y++)分析器
- 將目標和分析器投入執行
- 支援複雜 C++ 應用的進展
- 關於除錯符號
- 結論

- 設定目標 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 效能分析
如何使用 OpenResty XRay 排查 HTTP 504 超時錯誤
- 問題:HTTP 504 閘道器超時錯誤
- 使用 OpenResty XRay 的引導式分析功能排查錯誤
- 全自動分析與報告

- 問題:HTTP 504 閘道器超時錯誤
- 使用 OpenResty XRay 的引導式分析功能排查錯誤
- 全自動分析與報告
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 語言編譯器的實現
- 作業系統支援
- 對開源社群的貢獻
- 結論
- 致謝

- 透明的跨容器追蹤
- 高效的棧展開
- 分析已終止程序(core dumps)
- 極低的追蹤開銷
- 標準 Y 語言庫和工具
- 網路過濾和控制
- Y 語言編譯器的實現
- 作業系統支援
- 對開源社群的貢獻
- 結論
- 致謝
Ylang:正規表示式、完整控制流與透明除錯符號處理(第三集,全四集)
- Y 語言的語法(接上文)
- 字串
- 內建的正規表示式支援
- 完整控制流支援
- 浮點數支援
- 與開源工具鏈的比較
- 清晰的除錯符號方式
- 除錯符號:無執行期系統開銷
- 集中的軟體包資料庫
- 模糊匹配除錯符號

- Y 語言的語法(接上文)
- 字串
- 內建的正規表示式支援
- 完整控制流支援
- 浮點數支援
- 與開源工具鏈的比較
- 清晰的除錯符號方式
- 除錯符號:無執行期系統開銷
- 集中的軟體包資料庫
- 模糊匹配除錯符號
Ylang 語法詳解:探針、追蹤者/被追蹤者空間與內建資料型別(第二集,全四集)
- 語言語法(接上文)
- 宏拓展
- 追蹤者與被追蹤者空間
- 探針
- 拓展變數型別

- 語言語法(接上文)
- 宏拓展
- 追蹤者與被追蹤者空間
- 探針
- 拓展變數型別
捕捉 Linux 核心追蹤子系統中的兩個 bug(使用 OpenResty XRay)
- 讀取使用者空間記憶體時的核心死鎖
- 核心中 x86 斷點插入的資料競爭

- 讀取使用者空間記憶體時的核心死鎖
- 核心中 x86 斷點插入的資料競爭
Lua 高 CPU 佔用排查:快速定位 Nginx/OpenResty 中最熱的 Lua 程式碼路徑
- 症狀:一個 Nginx 工作程序佔用近 100% CPU
- 使用引導式分析定位最熱的 Lua 程式碼路徑
- 透過 Insights 報告自動監控 Lua CPU 佔用
- 常見問題

- 症狀:一個 Nginx 工作程序佔用近 100% CPU
- 使用引導式分析定位最熱的 Lua 程式碼路徑
- 透過 Insights 報告自動監控 Lua CPU 佔用
- 常見問題
Kong 外掛 CPU 過高:被 pcall 隱藏的 Lua 異常,靠 CPU 火焰圖定位
- 問題:流量不高,Kong 外掛 CPU 卻過高
- 用 OpenResty XRay 火焰圖定位 CPU 瓶頸
- 結果:Kong CPU 使用率從 80% 降到 50%

- 問題:流量不高,Kong 外掛 CPU 卻過高
- 用 OpenResty XRay 火焰圖定位 CPU 瓶頸
- 結果:Kong CPU 使用率從 80% 降到 50%
線上上 Kong 服務程序中實時統計 CPU 和記憶體用量最高的外掛(使用 OpenResty XRay)
- 伺服器程序中所有 Kong 外掛的 CPU 使用情況
- 伺服器程序中所有 Kong 外掛的記憶體使用情況
- 伺服器的額外負擔
- 下一步是甚麼?

- 伺服器程序中所有 Kong 外掛的 CPU 使用情況
- 伺服器程序中所有 Kong 外掛的記憶體使用情況
- 伺服器的額外負擔
- 下一步是甚麼?
Ylang: 適用於 eBPF、SystemTap、GDB 等框架的動態追蹤語言(第一集,全四集)
- 甚麼是動態追蹤
- 為甚麼命名為 “Y”
- Ylang 入門
- 動態追蹤後端:eBPF+、Stap+、GDB 和 ODB
- 為甚麼動態追蹤需要一個統一的前端語言
- Ylang 語法:真正相容 C
- 常見問題

- 甚麼是動態追蹤
- 為甚麼命名為 “Y”
- Ylang 入門
- 動態追蹤後端:eBPF+、Stap+、GDB 和 ODB
- 為甚麼動態追蹤需要一個統一的前端語言
- Ylang 語法:真正相容 C
- 常見問題
慢速 TCP 連線抓包:追蹤 Nginx 讀取請求體的 200ms 延遲
- 問題
- 分析過程:慢速 TCP 連線上的抓包
- 全自動化的分析
- OpenResty XRay 是甚麼

- 問題
- 分析過程:慢速 TCP 連線上的抓包
- 全自動化的分析
- OpenResty XRay 是甚麼
定位洩漏的 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
- 真正的非侵入式追蹤

- 如何安裝 run-ysql 工具
- 統計實時總請求數
- 篩選出特定的請求
- 在 Web 控制檯中使用 YSQL
- 真正的非侵入式追蹤
Lua io.popen 阻塞 Nginx 事件迴圈:一次 150 倍吞吐量提升的實戰案例
- 問題:每秒 130 個請求
- OpenResty XRay 如何定位阻塞
- io.popen 的非阻塞替代方案
- 結果:7 倍與 150 倍
- 常見問題

- 問題:每秒 130 個請求
- OpenResty XRay 如何定位阻塞
- io.popen 的非阻塞替代方案
- 結果:7 倍與 150 倍
- 常見問題
最佳化超大 Nginx 配置導致的記憶體碎片
- 挑戰
- 分析
- 解決方案
- 結果

- 挑戰
- 分析
- 解決方案
- 結果
QCon 北京 2023 大會上關於深度分析和診斷 K8s 容器應用的演講
本週我受邀在 QCon 北京 2023 大會上作了一次遠端分享。

本週我受邀在 QCon 北京 2023 大會上作了一次遠端分享。
在 OpenResty 或 Nginx 程序中列出已載入的 Lua 模組
- 系統環境
- 已載入 Lua 模組的名稱
- 直接在 Web 控制檯中執行
- 追蹤容器內的應用
- 工具的實現方式
- 工具的開銷

- 系統環境
- 已載入 Lua 模組的名稱
- 直接在 Web 控制檯中執行
- 追蹤容器內的應用
- 工具的實現方式
- 工具的開銷
Nginx CPU 佔用過高:定位哪個請求消耗最多 CPU
- 前提條件與環境準備
- 定位哪個請求主機名最耗 CPU
- 定位哪個請求 URI 最耗 CPU
- 深入探究:為甚麼某些主機名更耗 CPU
- 在 Web 控制檯中執行這些工具
- 在容器內追蹤 Nginx CPU 佔用
- CPU 分析工具的實現原理
- 分析工具的開銷
- 常見問題

- 前提條件與環境準備
- 定位哪個請求主機名最耗 CPU
- 定位哪個請求 URI 最耗 CPU
- 深入探究:為甚麼某些主機名更耗 CPU
- 在 Web 控制檯中執行這些工具
- 在容器內追蹤 Nginx CPU 佔用
- CPU 分析工具的實現原理
- 分析工具的開銷
- 常見問題
記憶體減少 60%,OpenResty XRay 精準定位問題程式碼,快速完成修復上線
- worker 程序記憶體佔用高
- 分析過程
- worker 程序記憶體不釋放的疑問

- worker 程序記憶體佔用高
- 分析過程
- worker 程序記憶體不釋放的疑問
Lua CPU 火焰圖實戰:線上定位 LuaJIT 效能瓶頸
- 甚麼是 Lua CPU 火焰圖
- 分析簡單 LuaJIT 應用:驗證火焰圖精度
- 生產環境實戰:複雜 LuaJIT 應用
- 取樣開銷
- 生產安全性:不修改目標程序
- 相容性
- 常見問題

- 甚麼是 Lua CPU 火焰圖
- 分析簡單 LuaJIT 應用:驗證火焰圖精度
- 生產環境實戰:複雜 LuaJIT 應用
- 取樣開銷
- 生產安全性:不修改目標程序
- 相容性
- 常見問題
OpenResty 與 Nginx 共享記憶體區的記憶體碎片問題
- 空的共享記憶體區
- 填充類似大小的條目
- 刪除奇數鍵
- 刪除前半部分的鍵
- 緩解記憶體碎片

- 空的共享記憶體區
- 填充類似大小的條目
- 刪除奇數鍵
- 刪除前半部分的鍵
- 緩解記憶體碎片
OpenResty 和 Nginx 的共享記憶體區是如何消耗實體記憶體的
- Slab 與記憶體頁
- 分配的記憶體不一定有消耗
- 虛假的記憶體洩漏
- HUP 重新載入

- Slab 與記憶體頁
- 分配的記憶體不一定有消耗
- 虛假的記憶體洩漏
- HUP 重新載入
OpenResty 和 Nginx 如何分配和管理記憶體
- 如何檢視 Nginx 記憶體使用
- 系統層面
- 應用層面
- 傳統的 Nginx 伺服器
- FAQ:Nginx 需要多少記憶體?

- 如何檢視 Nginx 記憶體使用
- 系統層面
- 應用層面
- 傳統的 Nginx 伺服器
- FAQ:Nginx 需要多少記憶體?
LuaJIT GC64 模式
- 老的記憶體限制
- 何時會碰到這個記憶體限制
- 記憶體限制是每程序的
- GC 管理的記憶體
- 不由 GC 管理的記憶體
- 提升 x64 模式的記憶體上限到 4 GB
- 新的 GC64 模式
- 如何開啟 GC64 模式
- 效能影響
- 除錯分析工具鏈

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



