OpenResty XRay 在同一條呼叫棧裡剖析你的應用語言、底層系統庫與核心。以下是完整的技術棧支援矩陣,逐一標註各技術棧的分析深度。
預約演示| 技術棧 | CPU 火焰圖 | 記憶體分析 | 更多 |
|---|---|---|---|
| LuaJIT / Lua (OpenResty, Nginx, Kong) | Supported含 Lua↔C 混合棧 | 引用鏈級 — GC 物件引用、分配路徑 | 相關文章 → |
| C / C++ | Supported精確到原始碼行 | 分配器級 — 洩漏檢測、記憶體碎片 | 相關文章 → |
| Rust | Supported | 分配器級 | 相關文章 → |
| Java | Supported | 引用鏈級 — GC 引用分析,無 stop-the-world 停頓 | 相關文章 → |
| Go | Supported | 引用鏈級 | 相關文章 → |
| Python | Supported深入直譯器內部 | 引用鏈級 | 相關文章 → |
| Node.js | Supported | 引用鏈級 | 相關文章 → |
| PHP | Supported | 引用鏈級 | 相關文章 → |
| Erlang | Supported | 視工作負載而定 † | 相關文章 → |
| Perl | Supported | 引用鏈級 | 相關文章 → |
| Ruby | Supported | 視工作負載而定 † | — |
| 作業系統核心 | Supported獨立核心火焰圖 | 網路協議棧、程序排程器、系統呼叫分析 | 相關文章 → |
引用鏈級 = OpenResty XRay 遍歷 GC 物件引用關係,指出是誰持有了洩漏的記憶體,並給出分配程式碼路徑。 分配器級 = 洩漏檢測、記憶體碎片與分配器行為分析,不含物件引用鏈——前者定位到”哪個物件持有了不應釋放的記憶體”,後者發現”記憶體總量在持續增長”。
Erlang 和 Ruby 完整支援 CPU 剖析。記憶體分析的深度取決於具體的工作負載和執行時版本。告訴我們你的技術棧,我們會在部署之前說明針對你的環境能達到的確切分析深度。
OpenResty XRay 從外部接入正在執行的程序——不改程式碼、不重啟、不預載入任何庫。每一次取樣都會貫穿三層進行棧展開與符號化,合成一條連續的呼叫棧。
OpenResty XRay 直接解析執行時自身的內部資料結構——LuaJIT、CPython、JVM、Go、PHP、Node.js、Erlang、Perl、Ruby——還原出你的原始檔和程式碼行,而不只是直譯器的 C 函式幀。
C、C++ 和 Rust 幀——nginx、OpenSSL、glibc 以及你自己的模組——即使是去除了符號的生產環境二進位制,也能借助中央符號庫完成符號化。
排程器、網路協議棧、記憶體管理和系統調用出現在同一條呼叫棧裡,因此阻塞在核心中的 off-CPU 時間可以歸因到發起等待的應用程式碼。
libcrypto 中的 pkey_rsa_decrypt 消耗了將近半個核的 CPU。OpenResty XRay 順著 JWT 庫一路回溯到某個 Lua 外掛的第 93 行——這條跨語言呼叫鏈是 perf 無法呈現的。
JVM 堆在多次 Full GC 之後仍持續增長。OpenResty XRay 在執行中的 JVM 上遍歷 GC 物件引用鏈,定位到持有記憶體的資料結構——無需 heap dump,沒有 stop-the-world。
閱讀診斷過程 →不需要。對於主流發行版的軟體包,OpenResty XRay 從中央符號庫解析符號;對於改動過的開源軟體構建,OpenResty XRay 會近似重建符號;對於你自己的私有二進位制,OpenResty XRay 可以自動提取符號,也可以接受上傳的 RPM/DEB 包。你的生產構建保持原樣。
可以。每一次取樣得到的呼叫棧都會跨越三層展開並完成符號化,所以一張火焰圖裡同時包含你的應用幀、其下的 C 幀,以及再往下的核心幀。正因如此,一個吃 CPU 的 C 函式才能被歸因回撥用它的那一行應用程式碼。
OpenResty XRay Agent 執行在宿主機上,需要 root 許可權和一個核心模組。你的應用進程不會被修改:不注入任何程式碼、不預載入任何庫;沒有分析任務執行時,與應用程序完全沒有接觸。僅支援 Linux 伺服器;容器場景下,宿主機上的 Agent 可以分析該主機上所有容器內的程序。
We use cookie to make your experience better. By clicking 'I agree' or continuing to use this website you're giving permission for cookies to be stored.
Learn more.