Стресс-тестирование Asp.net - где недостающее время? - PullRequest
0 голосов
/ 22 февраля 2012

Существуют огромные отличия от результатов, полученных для инструмента стресс-тестирования (WebLoad) и таймеров в коде. Позади

Где пропущенное время?

Сетевая задержка? (Не тяжелая нагрузка: максимальный размер нагрузки 80 в течение 17 минут, без другого трафика)

IIS?

Как я могу измерить промежутки?

Результаты для одной страницы («Посадка»):

Результат WebLoad Avg = 3,1 с - Таймер WebLoad "Посадка"

Код позади = 0,05 сек - Начать запрос -> Завершить запрос.

Простой запрос браузера = 0,5 с

Код сзади:

 protected void Application_BeginRequest(object sender, EventArgs e)
    {
        Stopwatch RequestTimer = new Stopwatch();
        RequestTimer.Start();

        HttpContext.Current.Items["RequestTimer"] = RequestTimer;
    }

    protected void Application_EndRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.Items["RequestTimer"] != null)
        {
            Stopwatch RequestTimer = (Stopwatch)HttpContext.Current.Items["RequestTimer"];
            RequestTimer.Stop();
            Logger.SectionEnd("RequestTimer", RequestTimer, "", true); //Per Page Name
        }
    }

Часть кода веб-загрузки:

 wlGlobals.GetFrames = false 
wlHttp.Header["Host"] = host
wlHttp.Header["Proxy-Connection"] = "off"
wlHttp.Header["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7"
wlHttp.Header["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,\x2A/\x2A;q=0.8"
//wlHttp.Header["Accept-Encoding"] = "gzip,deflate,sdch"
wlHttp.Header["Accept-Language"] = "en-GB,en-US;q=0.8,en;q=0.6"
wlHttp.Header["Accept-Charset"] = "ISO-8859-1,utf-8;q=0.7,*;q=0.3"
SetTimer ("Landing")
wlHttp.Get(url)
SendTimer ("Landing")

Работа в .Net 4 IIS7.

Спасибо

1 Ответ

0 голосов
/ 24 февраля 2012

Разница между таймером кода и временем загрузки, наблюдаемым в браузере, состоит в основном из времени сети и времени отрисовки страницы. Поскольку WebLoad не отображает страницу (IIRC), он не будет включать этот компонент - только сетевое время. Большая разница между временем браузера и временем WebLoad немного беспокоит. Правильно ли имитирует WebLoad несколько соединений? Современные браузеры используют для загрузки страницы гораздо больше соединений (6-8 на хост), чем старые браузеры. Когда задержка высока, это может значительно сократить время загрузки. Если WebLoad использует только 2 соединения / хост (что и делали большинство браузеров до ~ 2009 года), тогда это может значительно исказить измерение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...