Рейтинг@Mail.ru

Network Performance Monitoring (NPM) and Diagnostics | Application Performance
Monitoring (APM) | Application-Aware Network Performance Monitoring (AA NPM)|
Network Fault Management

Как вести мониторинг производительности сервера и сети с помощью анализа трафика Wireshark?

При возникновении проблем в работе приложений и сервисов очень сложно определить истинную причину торможения. И самый распространенный ответ — это сеть работает медленно, каналы узкие, операторы связи не обеспечивают SLA. Ведь никому не интересно просматривать тысячи пакетов с анализатора протоколов (сниффера). Но очень часто проблема оказывается именно в работе самого приложения или сервера, на котором оно развернуто. Почему анализ и выявление проблем с производительностью серверов достаточно сложная задача?

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

Мониторинг производительности начинается с пользователя

Идем к пользователю и начинаем захват трафика на его стороне. Часто проблема уже прошла, и ждать ее возникновения вновь приходится долго. Бедный пользователь делает те же самые действия, но система работает стабильно. Негатив со стороны ИТ-специалиста и лестные слова в душе в сторону пользователя обеспечены. Выход можно поставить захват трафика на стороне сервера, запустив dumpcap на длительное время с сохранением трафика на USB диск. Но давайте попробуем посмотреть файл с захваченным трафиком.

Оценим время подключения пользователя к серверу

Ищем в файле DNS запрос к серверу, на котором работает приложение. Оцениваем время отклика DNS сервера и убеждаемся, что оно приемлемое для вашей сети, используя колонку Time в Wireshark (обычно время отклика не должно быть более 150 мс). Если пользователь часто обращается к этому серверу, то ищем пакет запросом на установление TCP сессии (TCP SYN).

Примечание: Когда мы анализируем время отклика приложений, будьте уверены, что анализатор настроен корректно и использует дельту во времени между пакетами. Это можно проверить в настройках Wireshark меню View.

Как вести мониторинг производительности сервера и сети с помощью анализа трафика Wireshark?

Для анализа скорости установления сессии с сервером необходимо воспользоваться фильтром TCP Stream для выборки пакетов, которые относятся к данной TCP сессии (правый клик мыши на любом пакете в TCP сессии и выбираем TCP Stream фильтр). Основная цель наших действий это сравнить время передачи по сети (network roundtrip time) со временем отклика приложения (server response time).

Как только фильтр настроен, и мы видим пакеты, относящиеся к сессии, оцените временную дельту между пакетом пользователя с TCP SYN и пакетом с TCP SYN-ACK отправленным сервером пользователю. Это время можно использовать как отправную точку для поиска источника проблемы. На скриншоте ниже время отображается в пакете номер 7 и составляем 134 мс.

мониторинг производительности сервера и сети с помощью анализа трафика Wireshark

Анализ времени отклика приложения

Как только пользователь установил TCP соединение, он запросит необходимые данные. В примере выше клиент отправил запрос к Web серверу HTTP GET. Обращаемся к колонке дельта и видим, что сервер ответил через 125 мс. с TCP ACK, что подтверждает получение сервером запроса, но не сам ответ. И затем сервер потратил 4,85 секунд на отправку пакета с требуемыми данными и затем быстро передал оставшиеся пакеты на скорости канала (сеть летает). Сравнивая время 4.85 секунды с временем установления соединения – 134 мс. мы явно можем сделать вывод – что время отклика сервера очень большое.

Сервер, пользователь или сеть – кто виноват, и что делать?

Основываясь на данной информации очень просто понять, что делать дальше. Если время отклика сервера существенно выше времени установления соединения (connection setup time) и нет повторных передач (TCP retransmissions), то проблема на стороне сервера. Сеть в данном примере ни при чем.

Если задержек в данной транзакции не обнаружено, то нужно перемещаться к другому запросу, внимательно отслеживая количество времени, которое было затрачено сервером на ответ пользователя. Постепенно получив опыт захвата трафика на стороне клиента, можно переходить к анализу трафика на стороне сервера, так как этот анализ позволит понять, чем был занят сервер, отвечая на запрос нашего пользователя в течение 4,38 секунд.

Выводы

Искать проблемы с производительностью сети или сервера или приложения можно и с помощью Wireshark, но для решения данной задачи потребуется сноровка, подключение в нескольких местах в сети и желательно одновременный захват трафика с последующей синхронизацией файлов по времени. А если корпоративные приложения многоуровневые и серверов много, то автоматизированные комплексы мониторинга или коммерческие анализаторы протоколов существенно сэкономят время.

См. также:

 

Рейтинг@Mail.ru © 2017 NetworkGuru.ru Использование материалов сайта без согласования запрещено!