Asp.net压力测试-缺失的时间在哪里?
在代码中,压力测试工具(WebLoad)和计时器的结果存在巨大差异 背后, 错过的时间在哪里 网络延迟?(非重负载:最大负载大小为80,持续17分钟,无其他流量) IIS 如何测量间隙 一页的结果(“登录”):Asp.net压力测试-缺失的时间在哪里?,asp.net,stress-testing,Asp.net,Stress Testing,在代码中,压力测试工具(WebLoad)和计时器的结果存在巨大差异 背后, 错过的时间在哪里 网络延迟?(非重负载:最大负载大小为80,持续17分钟,无其他流量) IIS 如何测量间隙 一页的结果(“登录”): protected void Application_BeginRequest(object sender, EventArgs e) { Stopwatch RequestTimer = new Stopwatch(); RequestTime
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平均结果=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上运行
感谢在浏览器中观察到的代码计时器和加载时间之间的差异主要是网络时间和页面呈现时间。由于WebLoad不呈现页面(IIRC),因此它将不包括该组件-仅包括网络时间。浏览器时间和WebLoad时间之间的巨大差异令人担忧。WebLoad是否正确模拟多个连接?与旧浏览器相比,现代浏览器使用更多的连接(每台主机6-8个)来加载页面。当延迟较高时,这可以大大缩短加载时间。如果WebLoad只使用2个连接/主机(这是~2009年以前大多数浏览器所做的),那么它可能会严重扭曲测量结果。在运行测试时,我使用浏览器提出了一个请求,并得到了类似的结果。我认为大部分延迟都在IIS级别,我可以测量它吗?