Диагностические инструменты и журналы

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

В этой теме рассматриваются сетевые инструменты, инструменты JVM и диагностические журналы, которые можно использовать для устранения неполадок, связанных с сетью и JVM в Apigee Edge.

Утилита для анализа TCP/IP-пакетов (tcpdump)

Инструмент tcpdump — это утилита командной строки для перехвата и фильтрации TCP/IP-пакетов, принимаемых или передаваемых по сети. Он доступен для операционных систем Linux/Unix. Установить эту утилиту можно с помощью yum следующим образом:

yum install tcpdump

Инструмент tcpdump полезен для устранения неполадок, связанных с сетью или SSL. Например:

  • Ошибка 502 Bad Gateway (вызвана исключением EOF)
  • Ошибки 503 «Сервис недоступен»
  • Сбои при установлении SSL-соединения

Для устранения любой из этих проблем необходимо сначала определить пару компонентов, между которыми возникла ошибка. В случае с Edge это может быть одна из следующих пар:

  • Клиентское приложение и маршрутизатор
  • Маршрутизатор и процессор сообщений
  • Обработчик сообщений и серверная часть

После того как вы определите проблемную пару компонентов, вы можете перехватить сетевые пакеты с помощью tcpdump на одном или обоих из этих компонентов.

Захват пакетов, отправленных на/полученных от определенного хоста, с помощью tcpdump.

Используйте следующую команду tcpdump для захвата всех пакетов, отправленных на указанный хост (IP-адрес) или полученных с него, и сохранения информации в указанном файле:

tcpdump -i any -s 0 host <IP address> -w <File name>

Где:

Параметр Описание
(интерфейс) указывает интерфейс, с которого следует захватывать пакеты. Использование значения «any» позволяет захватывать пакеты со всех интерфейсов.
(snarf/snaplen) задает объем каждого пакета для захвата. Использование значения 0 (ноль) позволяет захватить весь пакет целиком.
IP-адрес — это IP-адрес хоста, для которого мы хотим перехватить пакеты.
Имя файла — это имя файла, в который должна быть записана программа tcpdump.

Пример

Допустим, вы хотите перехватить пакеты данных между обработчиком сообщений и бэкэнд-сервером:

  1. Войдите в систему обработки сообщений.
  2. Определите IP-адрес бэкэнд-сервера (предположим, это 22.22.22.22), для которого мы хотим перехватывать пакеты.

Для захвата сетевых пакетов для хоста с определенным IP-адресом используйте следующую команду:

tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap

Если серверная часть выдает несколько IP-адресов, используйте имя хоста серверной части в команде tcpdump, как показано ниже:

tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap

Если имеется несколько серверов бэкэнда с разными IP-адресами (22.22.22.22, 33.33.33.33 и 44.44.44.44), используйте команду tcpdump, указанную ниже:

tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap

Анализ tcpdumps

Вы можете просматривать или анализировать дампы tcpdump с помощью команды tcpdump или графического инструмента Wireshark .

Ссылки

Дампы кучи

Дампы кучи — это снимки памяти Java-процесса. Они содержат информацию об объектах и ​​классах Java, находящихся в куче на момент создания дампа. Обычно они довольно большие по размеру, варьируясь от нескольких сотен МБ до нескольких ГБ.

Дамп кучи очень полезен, когда Java-процесс, например, обработчик сообщений, отображает следующее:

  • Высокое потребление памяти
  • Ошибка нехватки памяти

Создание дампа кучи для процесса Java

В Java есть утилита jmap , которая позволяет генерировать статистику памяти или дампы кучи запущенного процесса Java.

Для создания дампа кучи Java-процесса используйте следующую команду jmap:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>

Где:

Параметр Описание
JAVA_HOME Это каталог установки Java?
имя файла Это имя файла, в который будет записан дамп кучи.
ПИД Это идентификатор процесса Java-приложения, дамп памяти которого необходимо получить.

Пример

Предположим, что обработчик сообщений mp-east использует много памяти или выдает ошибки OutOfMemory. Определите идентификатор процесса обработчика сообщений с помощью команды ps в операционной системе Unix. Допустим, это 24569.

Для создания дампа кучи запустите утилиту jmap следующим образом:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569

Анализ дампов памяти

Анализ дампов памяти можно проводить с помощью Eclipse MAT (Memory Analyzer Tool), чтобы определить потенциальные утечки памяти или выявить объекты Java, которые приводят к высокому потреблению памяти.

Ссылки

Как собрать дамп кучи

утилита jmap

страница руководства jmap

Инструмент анализа памяти (MAT)


Дампы потоков

Дамп потоков — это снимок состояния всех потоков запущенного Java-процесса. Состояние каждого потока отображается вместе с содержимым его стека, называемым трассировкой стека. Некоторые потоки будут частью запущенного Java-приложения, а другие — внутренними потоками JVM.

Дамп потоков предоставляет информацию о работе каждого потока приложения. Эта информация может быть очень полезна для:

  • Диагностика таких проблем, как скачки загрузки ЦП, медленное время отклика или зависание Java-приложений.
  • Оптимизация производительности приложения и JVM.

Создание дампов потоков

Дамп потоков для процесса Java можно сгенерировать с помощью утилиты jstack, как показано ниже:

sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>

Где:

Параметр Описание
JAVA_HOME Это каталог установки Java.
ПИД Это идентификатор процесса Java-приложения, дамп потоков которого вы хотите получить.
имя файла Это имя файла, в который будет записан дамп потоков.

Пример

Для создания дампа потоков для процесса с идентификатором 37320 в обработчике сообщений mp-east используйте следующую команду:

sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt

Как показано в приведенном выше примере, дамп потоков процесса будет сохранен в файл /opt/apigee/edge-message-processor/mp-east-threadDump.txt.

Анализ дампов потоков

Вы можете просмотреть дампы потоков в любом текстовом редакторе, например, vi (Linux) или notepad (Windows). Подробную информацию о различных разделах дампа потоков и способах интерпретации информации см. в разделе «Дамп потоков».

Ссылки