Byteman 4.0.17的bmsubmit.sh返回400 Bad Request错误原因查询
问题根因排查
你遇到的400 Bad Request错误90%以上场景是bmsubmit请求的端口未被Byteman Agent占用,而是被其他HTTP服务响应,按以下顺序排查即可:
- 第一步:确认你已经将Byteman Agent挂载到目标Java进程
bmsubmit本身不能独立工作,需要先将agent注入到你要插桩的Java进程中,启动agent的参考命令如下:
如果你是对已经运行的进程挂载,用以下命令:java -javaagent:/path/to/byteman-download-4.0.17/lib/byteman.jar=port:9091,listener:true -jar 你的应用.jarbyteman-download-4.0.17/bin/bminstall.sh <目标Java进程PID> - 第二步:校验端口匹配关系
Byteman Agent默认监听9091端口,如果你启动agent时通过port参数自定义了端口,执行bmsubmit时需要加上-p <自定义端口>参数,示例:# 如果你agent用的是9092端口,提交命令要改为 byteman-download-4.0.17/bin/bmsubmit.sh -p 9092 -l /mnt/jenkins/FileDescriptorLeak.btm - 第三步:确认端口归属
执行以下命令检查9091端口(或你自定义的端口)的占用进程:
如果返回的进程不是你要插桩的Java进程,说明端口被其他服务占用,需要重新指定agent的监听端口。ss -tulnp | grep 9091 - 额外说明:你提供的规则文件语法完全正确,
<init>构造方法的写法、traceStack调用都符合Byteman规则规范,规则本身不会触发该错误。
内容的提问来源于stack exchange,提问作者Jeremy Whiting
相关产品推荐
相关产品推荐

