淘宝tomcat远程调试

来源:互联网 发布:易建联伦敦奥运会数据 编辑:程序博客网 时间:2024/06/06 21:11

操作篇

主要目的是提供一套环境给大家做远程debug用,远程tomcat上已经启用调试模式,大家用eclipse或idea配置下远程连接即可,具体步骤如下:

  1. 在EDAS上应用名为”测试“下找到bak应用,IP地址是10.168.86.158的那个(内网地址),在bak上部署你要debug的应用,重启即可;

  2. 在eclipse里配置远程debug,如下:
    这里写图片描述
    Host里写bak应用的外网IP,就能连接上去了,如果连接失败,有以下几种可能:
    1) bak应用服务器上7070端口并没有启动成功,请在bak上执行netstat -anop | grep 7070 看下7070启动成功与否,如果没有启动成功,重启下bak再看下;
    2) 如果7070端口已经启动成功了,你还是远程连接不上去,有可能是其他同学已经远程连到bak上去了,在群里吼下问下

  3. 此时你的eclipse已经远程连接到bak应用上去了,但是你的请求并没有发到bak上去,比如你用模拟登陆页面请求mocklogin,这时请求是发到线上的鉴权中心服务器的,那么如果才能发到bak上面来呢?在本地改下hosts文件即可,将你要请求的域名和bak应用对应的负载均衡的外网IP映射下,如下是windows下的hosts文件:
    这里写图片描述
    记得要重启下机器,不然hosts文件修改不生效

  4. 这时你在浏览器里的请求就会被发到bak对应的负载均衡器,然后到bak应用,你就可以远程debug啦。

原理篇

之所以能远程debug,就是使用的tomcat的原生特性,本来在startup.sh里直接改./catalina.sh start为./catalina.sh jpda start就OK了,但是EDAS不是调用startup.sh启动,而是直接使用catalina.sh start,无奈只得修改catalina.sh,在开头加上一行如下:

JAVA_OPTS=”$JAVA_OPTS
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7070”

1 0