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.