Pull to refresh

Использование отладчика Fiddler для поиска проблем производительности клиент-серверных приложений.

Веб-отладчик Fiddler является отличным средством для анализа HTTP траффика. Рассмотрим задачу поиска проблем производительности в клиент-серверных приложениях, взаимодействующих по SOAP.

Пусть у нас есть некое клиентское приложение, которое взаимодействует с веб-сервисом, используя для этого SOAP протокол. Вы получили информацию о том, что некоторые пользовательские функции по неизвестной причине работают медленно. Конечно, когда есть возможность запустить код в режиме отладки прямо на месте никаких вопросов не возникает. Но допустим это ПО установлено не у вас, а в сторонней компании. И тут нам на помощь придет Fiddler.

Я использую следующий метод в своей практике. Последовательность действий.

Локализация длительных серверных методов

Запускаем Fiddler и клиентское приложение, и выполняем медленную операцию. В логе отображаются все пойманные запросы. Если выбрать метод, то на вкладке Statistic в поле Overal Elapsed можно посмотреть на длительность выполнения. Это то, что нужно.



Чтобы посмотреть название метода и параметры пакета достаточно переключиться на вкладку Inspectors.



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

Чтобы облегчить себе просмотр можно добавить дополнительную колонку — затраченное время. У Fiddler существует механизм расширений, которые реализуется через изменение правил в файле CustomRules.js. Файл располагается в папке с документами %userprofile%\Documents\Fiddler2\Scripts

В файл нужно добавить следующий код:

public static BindUIColumn("Time Taken")
function CalcTimingCol(oS: Session){
var sResult = String.Empty;
if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest))
{
sResult = String.Format("{0:h:mm:ssss.ffff}",
(oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest));
}
return sResult;
}


Описанным выше способом можно определять задержки на стороне сервера — медленное выполнение серверных операций.

Локализация пауз на клиенте

Случаи, когда пауза возникает на стороне клиента между двумя серверными вызовами можно отловить, используя вкладку Timeline
Выделите несколько запросов и откройте Timeline. На графике будет отображена длительность и относительное время начала и завершения запроса:



Если между двумя запросами есть «окно», то это и есть пауза, которая возникает на клиенте.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.
Change theme settings