Проблема
Я тестирую производительность одного из наших приложений AngularJS + ASP.NET WebAPI. Странная вещь, которую я наблюдаю, заключается в том, что точно такие же запросы выполняются с разными таймингами в Fiddler.
Это поведение наблюдается не только на сервере, но и на моей локальной машине.
Подробнее
Приложение проверяется с помощью Chrome и записывается в ASP.NET WebAPI (Microsoft.AspNet.WebApi version 5.2.2
) с помощью Angular JS version 1.3.8
.
Сервер - это Windows Server 2008 R2 с SQL Server 2008 и IIS 7.5.
Мой локальный компьютер - это Windows 8.1 с Visual Studio 2013 и SQL Server 2014.
Я заметил, что одни и те же запросы выполняются с разными таймингами в соответствии с Fiddler (запросы в синем одинаковы, а запросы в белом - это еще один тип точных запросов):
Например, детальное время запроса номер запроса 26:
Request Count: 1
Bytes Sent: 583 (headers:517; body:66)
Bytes Received: 3,844 (headers:260; body:3,584)
ACTUAL PERFORMANCE
--------------
ClientConnected: 17:26:25.099
ClientBeginRequest: 17:27:26.544
GotRequestHeaders: 17:27:26.544
ClientDoneRequest: 17:27:26.544
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 17:26:25.102
FiddlerBeginRequest: 17:27:26.544
ServerGotRequest: 17:27:26.544
ServerBeginResponse: 17:27:26.554
GotResponseHeaders: 17:27:26.554
ServerDoneResponse: 17:27:26.554
ClientBeginResponse: 17:27:26.554
ClientDoneResponse: 17:27:26.554
Overall Elapsed: 0:00:00.010
И подробные тайминги номера запроса 28:
Request Count: 1
Bytes Sent: 583 (headers:517; body:66)
Bytes Received: 3,844 (headers:260; body:3,584)
ACTUAL PERFORMANCE
--------------
ClientConnected: 17:26:25.099
ClientBeginRequest: 17:27:29.104
GotRequestHeaders: 17:27:29.104
ClientDoneRequest: 17:27:29.104
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 0ms
HTTPS Handshake: 0ms
ServerConnected: 17:26:25.102
FiddlerBeginRequest: 17:27:29.104
ServerGotRequest: 17:27:29.104
ServerBeginResponse: 17:27:29.616
GotResponseHeaders: 17:27:29.616
ServerDoneResponse: 17:27:29.616
ClientBeginResponse: 17:27:29.616
ClientDoneResponse: 17:27:29.616
Overall Elapsed: 0:00:00.512
И как я уже сказал, это точно такие же запросы (одни и те же заголовки, одни и те же данные и т.д.).
Запрос 28 выполняется через 1-2 секунды после запроса 26.
Вопросы
Что может быть основной причиной такого поведения? Где я должен искать проблему? Странная вещь заключается в том, что запрос сначала быстрый, а затем медленный, а затем снова быстрый и т.д. Для меня нет оснований полагать, что проблема связана с кэшированием данных.
Как точно проверить тайминги на сервере, чтобы найти это различие между 0.010
и 0.512
секунд? Разница более 50 раз.