簡體   English   中英

如何分析在雲代工廠上運行的 spring boot webapp 的內存?

[英]How to profile memory of a spring boot webapp running on cloud foundry?

我有一個在內部雲代工廠空間上運行的 Spring Boot 應用程序。 我想監視此 Web 應用程序的堆棧和堆內存,以查找源自代碼的 StackOverflow 異常。

分析應用程序的最佳方法是什么。

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 ...
  • 要將 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"

2. 創建到應用程序容器的 SSH 隧道

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

3.VisualVM 配置

  • 下載VisualVM
  • 運行 VisualVM: 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/隧道/:
      • 源端口: 9999
      • 目的地: 127.0.0.1:9999 : 127.0.0.1:9999

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM