如何分析在云代工厂上运行的spring boot webapp的内存?

时间:2018-05-03 12:11:32

标签: java spring-boot cloudfoundry memory-profiling

我有一个在内部云代工空间运行的Spring启动应用程序。 我想监视这个Web应用程序的Stack和Heap内存,以便找到源自代码的StackOverflow异常。

什么是分析应用程序的最佳方式。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

https://content.pivotal.io/blog/new-cloud-foundry-java-buildpack-improves-developer-diagnostic-tools

1。使用JMX设置运行您的应用

  • 要在本地计算机上测试性能分析,请使用以下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"
    

2。创建到该应用程序容器的SSH隧道

cf ssh -N -T -L 9999:localhost:9999 theapp

3。 VisualVM配置

  • 下载VisualVM
  • 运行VisualVM:visualvm --jdkhome "$JAVA_HOME"
  • 添加JMX连接:localhost:9999


您也可以使用PuTTY

创建SSH隧道
  • 检索并显示该应用程序的向导:
    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
    • connection / ssh / tunnels /:
      • 源端口:9999
      • 目的地:127.0.0.1:9999