Снятие дампов памяти (heap) и потоков

В некоторых очень редких случаях SberMobile Server или SberMobile IIoT Platform Client могут перестать отвечать из-за потери доступа к памяти, 100% нагрузки на процессор или блокировки потоков. Такие ситуации наиболее вероятно могут произойти в версиях Предпросмотра SberMobile.

В большинстве случаев инженеры SberMobile решают такие вопросы через удалённое соединение с машиной, на которой запущен SberMobile. Однако если удаленный доступ ограничен, например, из-за соображений безопасности, клиентам приходится осуществлять снятие дампов потоков и памяти (heap), чтобы передать их SberMobile для последующего анализа.

Создание отслеживания стека зависшего / неотвечающего SberMobile Server или SberMobile IIoT Platform Client

Для создания дампа потоков, использумого для диагностирования неэффективной блокировки потоков и их зависания:

  • 1. Проверьте версию Java Runtime Environment (JRE), используемую для работы SberMobile при помощи %SberMobile Server Folder%/jre/bin/java.exe -version
  • 2. Установите комплект разработчика Java (JDK) той же версии, что JRE, используемая на SberMobile
  • 3. Выясните идентификатор Процесса (PID) процесса SberMobile:
    • Используя Task Manager в Windows
    • Путём запуска ps ax|grep java на Linux
  • 4. Запустите %JDK Folder%/bin/jstack -l PID > stack.txt
  • 5. Отправьте конечный файл stack.txt сотрудникам SberMobile для анализа

Создание дампа памяти (heap) SberMobile Server или SberMobile IIoT Platform Client с высокой загрузкой памяти java

Примечание 1: Использование памяти SberMobile Server можно отследить при помощи Датчика использования памяти сервера.

Примечание 2: Использование памяти SberMobile IIoT Platform Client можно отследить при помощи утилиты JVisualVM, которая входит в комплект разработчика Java (JDK).

Примечание 3: Утечку памяти можно успешно определить, если использование памяти сервера постоянно росло в течение нескольких дней и выросло до 200-300% начального использования памяти, зарегистрированного после нескольких запусков сервера.

Примечание 4: Создание графика истории Датчик использования памяти сервера поможет ясно увидеть растущее использование памяти.

Для создания дампа памяти, который используется для диагностирования её утечек:

  • 1. Установите комплект разработчика Java (JDK) той же версии, что JRE, используемая на SberMobile
  • 2. Выясните идентификатор Процесса (PID) процесса SberMobile:
    • Используя Task Manager в Windows
    • Путём запуска ps ax|grep java на Linux
  • 3. Запустите команду jmap -dump:format=b,file=dump.bin PID
  • 4. Сожмите конечный файл dump.bin и перешлите сотрудникам SberMobile для анализа