Использование отладчика Fiddler для поиска проблем производительности клиент-серверных приложений.
Invite pending
Веб-отладчик Fiddler является отличным средством для анализа HTTP траффика. Рассмотрим задачу поиска проблем производительности в клиент-серверных приложениях, взаимодействующих по SOAP.
Пусть у нас есть некое клиентское приложение, которое взаимодействует с веб-сервисом, используя для этого SOAP протокол. Вы получили информацию о том, что некоторые пользовательские функции по неизвестной причине работают медленно. Конечно, когда есть возможность запустить код в режиме отладки прямо на месте никаких вопросов не возникает. Но допустим это ПО установлено не у вас, а в сторонней компании. И тут нам на помощь придет Fiddler.
Я использую следующий метод в своей практике. Последовательность действий.
Запускаем Fiddler и клиентское приложение, и выполняем медленную операцию. В логе отображаются все пойманные запросы. Если выбрать метод, то на вкладке Statistic в поле Overal Elapsed можно посмотреть на длительность выполнения. Это то, что нужно.
Чтобы посмотреть название метода и параметры пакета достаточно переключиться на вкладку Inspectors.
Как вы успели заметить, главное неудобство заключается в том, что помимо того, что все вызовы выглядят идентично, как запрос к веб-сервису, так и еще приходится выбирать каждую из записей, чтобы посмотреть статистику.
Чтобы облегчить себе просмотр можно добавить дополнительную колонку — затраченное время. У Fiddler существует механизм расширений, которые реализуется через изменение правил в файле CustomRules.js. Файл располагается в папке с документами %userprofile%\Documents\Fiddler2\Scripts
В файл нужно добавить следующий код:
Описанным выше способом можно определять задержки на стороне сервера — медленное выполнение серверных операций.
Случаи, когда пауза возникает на стороне клиента между двумя серверными вызовами можно отловить, используя вкладку Timeline
Выделите несколько запросов и откройте Timeline. На графике будет отображена длительность и относительное время начала и завершения запроса:
Если между двумя запросами есть «окно», то это и есть пауза, которая возникает на клиенте.
Пусть у нас есть некое клиентское приложение, которое взаимодействует с веб-сервисом, используя для этого 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. На графике будет отображена длительность и относительное время начала и завершения запроса:
Если между двумя запросами есть «окно», то это и есть пауза, которая возникает на клиенте.