Asp.net压力测试 - 缺少的时间在哪里?

时间:2012-02-22 14:16:27

标签: asp.net stress-testing

与压力测试工具(WebLoad)和代码中的计时器的结果存在巨大差异 在后面,

缺少的时间在哪里?

网络延迟? (不是很重的负载:17分钟的最大负载大小80,没有其他流量)

IIS?

我如何衡量差距?

一页的结果(“登陆”):

WebLoad平均结果= 3.1秒 - WebLoad计时器“登陆”

Code Behind = 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
        }
    }

WebLoad代码的一部分:

 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 :(得分:0)

代码计时器与浏览器中观察到的加载时间之间的差异主要是网络时间和页面呈现时间。由于WebLoad不呈现页面(IIRC),因此它不会包含该组件 - 仅包括网络时间。浏览器时间和WebLoad时间之间的巨大差异有点令人担忧。 WebLoad是否正确模拟了多个连接?与旧版浏览器相比,现代浏览器使用更多连接(每个主机6-8个)来加载页面。当延迟很高时,这可以大大缩短加载时间。如果WebLoad仅使用2个连接/主机(这是大多数浏览器在2009年之前所做的那样),那么它可能会大大扭曲测量。