本项目基于 JVM-SANDBOX 开发扩展模块
模块名 | 功能 | 说明 |
---|---|---|
time-tunnel | 时间隧道 | 记录方法的调用,支持根据 id 进行方法调用回放 |
call-stack-time-consume | 调用堆栈及耗时 | |
time-consume | 调用栈中每个方法调用的耗时 | |
call-chain | 调用链追踪模块 | id 相同则为同一个调用链,入口方法栈深度为 0 |
http-servlet-context | 请求上下文模块,启动时自动加载 | 拦截 HttpServlet.service 方法获取当前 request 和 response 对象,放到 context 中,可以通过 RequestContextHolder.get 静态方法获取 |
bin 目录中提供了快速启动的脚本
使用的前提是,根据官方建议的方法将 sandbox 安装在默认的路径下,即 ~/.opt/sandbox
脚本 | 功能 |
---|---|
install.sh | 安装模块 |
shutdown.sh.sh | 卸载 jvm-sandbox |
recordtimetunnel.sh pid classPattern behaviorPattern | 记录方法调用上下文 |
reinvoke.sh pid id | 重放指定id的方法调用 |
listRecords.sh.sh pid | 查看方法调用的记录 |
callStackTimeConsume.sh pid classPattern behaviorPattern | 开启调用堆栈及耗时 |
timeconsume.sh pid classPattern behaviorPattern | 打印方法调用耗时 |
call-chain.sh pid classPattern behaviorPattern | 开启调用链追踪 |
先执行 install.sh 会自动编译并将模块安装到 ~/.opt/sandbox/module 目录下 |
注:在脚本传参使用通配符记得加引号,如:
./recordtimetunnel.sh 47166 Clock '*'
开启模块功能的脚本会用到的参数:
- pid 所有脚本必须
- 类匹配模式,除了 shutdown 和 listRecords 其他都要
- 方法匹配模式,除了 shutdown 和 listRecords 其他都要
用于测试效果,可以在 bin/demo 里执行 java Clock 启动一个 java 进程
然后执行 jps 查看进程 id
选择要测试的模块对这个进程id进行测试,观察其输出