我有一个在内部云代工空间运行的Spring启动应用程序。 我想监视这个Web应用程序的Stack和Heap内存,以便找到源自代码的StackOverflow异常。
什么是分析应用程序的最佳方式。
答案 0 :(得分:1)
如果您在cloudfoundry安装中启用了ssh访问,则可以使用JMX或Yourkit Profiler执行此操作。
以下是一些链接:
答案 1 :(得分:1)
https://content.pivotal.io/blog/new-cloud-foundry-java-buildpack-improves-developer-diagnostic-tools
要在本地计算机上测试性能分析,请使用以下JMX配置运行theapp
,然后转到最后一步“ 3。VisualVM配置” :
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 ...
要在CF中将JMX配置传递到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"
cf ssh -N -T -L 9999:localhost:9999 theapp
visualvm --jdkhome "$JAVA_HOME"
localhost:9999
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
9999
127.0.0.1:9999