笔者所在的公司,最近生产环境调用一个接口,耗时非常大,但是本机的开发环境和测试环境都不存在这个问题,笔者就用了Eclipse远程调试web程序的功能,将问题快速定位了。
1、修改tomcat的bin/catalina.sh , 添加一下一段参数:
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
添加之后, jvm参数所有参数为:
JAVA_OPTS="-XX:+PrintGCDetails -Xloggc:/data/gc/portal/jdk7-gc.log -Xmn1024m -Xms4096m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseAdaptiveSizePolicy
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"(8000为eclipse调试web程序所使用的端口)
2、在eclipse里面,Debug Configuration里面的Remote Java Application 填写Host 和 port(为你需要调试的web项目的IP地址和上面配置的端口号)
3、在本机eclipse运行项目,注意本机运行的项目代码最好跟生产需要调试的项目代码一致,否则会存在误差。
4、在web页面访问远程项目(不是访问本地项目),能够快速定位问题