使用jvisualvm调试远程Grails应用程序

时间:2014-01-28 07:50:19

标签: tomcat grails amazon-ec2 remote-debugging jvisualvm

我在Tomcat 7上部署了Grails 2应用程序,在Amazon EC2 Ubuntu实例上运行。通过SSH连接远程调试/监控应用程序所需的最低步骤是什么,例如使用jvisualvm(随JDK提供)?

1 个答案:

答案 0 :(得分:0)

我找到了一个可行的解决方案,因此将其记录下来供以后使用。请注意,此示例在Tomcat端不使用任何身份验证或SSL。稍微调整一下,这也适用于非Ubuntu实例。

<强> 1。在远程计算机上,通过添加到Tomcat的JAVA_OPTS来启用JMX:

/etc/default/tomcat7中,附加现有的JAVA_OPTS:

JAVA_OPTS = "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1098"

然后重新启动Tomcat以应用更改:

sudo service tomcat7 restart

2.在本地机器上:

SSH到远程计算机并在本地端口10000中创建SOCKS隧道。(这将打开一个看似正常的SSH提示到远程计算机,但也会在会话中打印其他调试日志。)

ssh -v -D 10000 <hostname>

启动jvisualvm。这些参数用于增加内存并使jvisualvm知道已编译的Grails类,其中 target / classes 相对于Grails应用程序目录:

jvisualvm -J-Xms1G -J-Xmx1G -cp:a target/classes

配置jvisualvm以使用我们创建的代理:

Prefences > Network
Add SOCKS proxy: hostname: localhost, port: 10000
No Proxy hosts: (make empty)

这里我使用'本地连接'只是为了避免本地和远程连接之间的主机名冲突。

Right-click on Local > "Add JMX connection" > localhost:1098

就是这样 - 现在您应该可以监控远程Grails应用程序了。