Инструменты диагностики и журналы

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

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

Утилита перехвата пакетов TCP/IP (tcpdump)

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

yum install tcpdump

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

  • Ошибки 502: ошибка шлюза (вызвана исключением EOF)
  • Ошибки "Сервис недоступен" (503)
  • Сбои при подтверждении SSL

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

  • Клиентское приложение и маршрутизатор
  • Маршрутизатор и процессор сообщений
  • Сервер обработки сообщений и бэкенд-сервер

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

Как записать пакеты, отправленные на определенный хост или полученные от него, с помощью tcpdump

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

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

Где:

Параметр Описание
-i (интерфейс) – указывает интерфейс, с которого должны быть получены пакеты. Значение "any" позволяет получать пакеты со всех интерфейсов.
-s (snarf/snaplen) указывает, сколько данных каждого пакета нужно захватить. Если указать значение 0, будет захвачен весь пакет.
IP-адрес – IP-адрес хоста, для которого нужно захватить пакеты.
Имя файла название файла, в который tcpdump должен записать данные.

Пример

Предположим, вам нужно перехватить пакеты между Message Processor и внутренним сервером.

  1. Войдите в систему на компьютере Message Processor.
  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

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

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

Ссылки

Дампы кучи

Дампы кучи – это снимки памяти процесса Java. Они содержат информацию об объектах и классах Java в куче в момент сбора дампа кучи. Обычно они имеют большой размер – от нескольких сотен мегабайт до нескольких гигабайт.

Дамп кучи очень полезен, когда процесс Java, например Message Processor, показывает:

  • Высокое использование памяти
  • OutofMemoryError

Как создать дамп кучи для процесса Java

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

Чтобы создать дамп кучи процесса Java, используйте следующую команду jmap:

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

Где:

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

Пример

Предположим, что процессор сообщений mp-east использует много памяти или выдает ошибки OutOfMemory. Определите идентификатор процесса Message Processor с помощью команды 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 man page

Memory Analyzer Tool (MAT)


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

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

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

  • Диагностика проблем, таких как скачки загрузки ЦП, медленное время отклика или не отвечающие на запросы приложения Java.
  • Как оптимизировать работу приложения и виртуальной машины Java

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

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

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

Где:

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

Пример

Чтобы создать дамп потока для идентификатора процесса 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) или блокноте (Windows). Подробную информацию о разных разделах дампа потоков и о том, как интерпретировать данные, можно найти в статье Дамп потоков.

Ссылки