我有一个在内部云铸造空间上运行的Spring启动应用程序。 我想监视此 Web 应用程序的堆栈和堆内存,以便查找源自代码的 StackOverflow 异常。
分析应用程序的最佳方法是什么。
- https://content.pivotal.io/blog/new-cloud-foundry-java-buildpack-improves-developer-diagnostic-tools
- https://community.pivotal.io/s/article/How-to-Remotely-Debug-Java-Applications-on-Cloud-Foundry
1.使用 JMX 设置运行应用
-
要在本地计算机上测试分析,请使用以下 JMX 配置运行
theapp
,然后转到最后一步"3.可视化虚拟机配置">:java -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar theapp.jar ...
-
要将 JMX 配置传递给 CF 中的
theapp
,请使用JBP_CONFIG_JMX
环境变量(或如上所述使用参数JAVA_OPTS
(,manifest.yml
:applications: - name: theapp buildpack: java_buildpack env: JBP_CONFIG_JMX: "{enabled: true, port: 9999}" # JAVA_OPTS: "-Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
阿拉伯数字。创建到应用容器的 SSH 隧道
cf ssh -N -T -L 9999:localhost:9999 theapp
3. 可视化虚拟机配置
- 下载可视化虚拟机
- 运行可视化虚拟机:
visualvm --jdkhome "$JAVA_HOME"
- 添加 JMX 连接:
localhost:9999
您还可以使用 PuTTY 创建 SSH 隧道
- 检索并显示应用的 GUID:
cf app theapp --guid # example: 12345678-1234-1234-1234-123456789012
获取 ssh 客户端的一次性密码:
cf ssh-code # example: PolSkAjEzyKtrUdnA
创建 PuTTY SSH 连接:
- 主机名:
theapp.your.cloud
- 端口:
2222
- 用户名:
cf:<app-guid>/<app-instance-index>@ssh.your.cloud
- 示例:
cf:12345678-1234-1234-1234-123456789012/0@ssh.your.cloud
- 示例:
- 密码:
<ssh-code>
- 示例:
PolSkAjEzyKtrUdnA
- 示例:
- 连接/ssh/tunnels/:
- 源端口:
9999
- 目的地:
127.0.0.1:9999
- 源端口:
- 主机名:
如果您在 cloudfoundry 安装中启用了 ssh 访问权限,则可以使用 JMX 或 Yourkit Profiler 来执行此操作。
以下是一些链接:
-
https://www.cloudfoundry.org/blog/just-released-java-buildpack-4-0/
-
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/framework-your_kit_profiler.md
-
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/framework-jmx.md