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

标签 tomcat grails amazon-ec2 remote-debugging jvisualvm

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

最佳答案

我找到了一个可行的解决方案,因此将其记录下来以备后用。请注意,此示例在 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 提示符,但也会在 session 中打印额外的调试日志。)

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 应用程序了。

关于tomcat - 使用 jvisualvm 调试远程 Grails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21399732/

相关文章:

spring - 运行时tomcat和spring web app报错

java - 如何重定向到部署在本地服务器上的应用程序中的 spring Controller 方法?

java - 使用 Java Web 应用程序变得非常慢

grails - Grails:改变当前环境

grails - 在grails应用程序中使用spud cms创建的页面的URL格式是什么?

java - AWS/Java : How to Get EC2 Instances From AWS Java API

c# - AWS - 如何更改 AWSSDK for .NET 中的 cloudwatchclient 配置服务版本

java - 嵌入式 tomcat 7 servlet 3.0 注释不起作用

grails - Geb-执行Ctrl + P

php - aws ubuntu实例php最大文件上传不变