在测试过程中,出现沙箱环境中提交的拓扑和本地启动的拓扑运行的结果不一致。查看log日志也没发现出问题原因, 不得已祭出远程debugg大招。下面是操作步骤:
- 配置yaml
在yaml里增加配置 topology.work。childopts,
topology.worker.childopts : "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=13006"
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=13006,参数是jdk1.5+后的开启jdwp(Java Debug Wire Protocol) 的命令,这里指定使用socket传输,端口使用13006(端口可以自行指定)。
-
提交拓扑 提交拓扑命令是jstorm提交拓扑的命令,记得配置文件要更换为修改后的配置。
-
进入jstorm nimbus监控页面,查看拓扑的worker运行在哪些机器上。
找到自己的拓扑,点击进去,
点击Task Stats,
可以看到自己的tasks,选择其中一个,记录下ip
-
在idea中创建remote
把host修改成task记录的ip,端口填写13006(自定义),点击ok保存。
- 点击debug按钮
出现如图,就可以成功debug了