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