Как профилировать память веб-приложения с весенней загрузкой, работающего на литейном облаке? - PullRequest
0 голосов
/ 03 мая 2018

У меня есть загрузочное приложение Spring, работающее во внутреннем облачном литейном пространстве. Я хочу отслеживать память стека и кучи этого веб-приложения, чтобы найти исключение StackOverflow, исходящее из кода.

Что может быть лучшим способом для профилирования приложения.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

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

1. Запустите ваше приложение с настройками JMX

  • Чтобы проверить профилирование на локальном компьютере, запустите theapp со следующей конфигурацией JMX, а затем перейдите к последнему шагу "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 в theapp в CF, используйте переменную окружения 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


Вы также можете создать SSH-туннель, используя PuTTY

  • Получение и отображение руководства приложения:
    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
0 голосов
/ 03 мая 2018

Если в вашей установке cloudfoundry включен ssh-доступ, вы можете использовать JMX или Yourkit Profiler для этого.

Вот несколько ссылок:

...