首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加载测试网站

加载测试网站
EN

Stack Overflow用户
提问于 2012-12-10 16:57:24
回答 2查看 1.6K关注 0票数 2

我目前正在编写一个小应用程序来加载测试一个网站,并有一些问题。

代码语言:javascript
运行
复制
List<string> pageUrls = new List<string();
// NOT SHOWN ... populate the pageUrls with thousands of links

var parallelOptions = new System.Threading.Tasks.ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = 100;
System.Threading.Tasks.Parallel.ForEach(pageUrls, parallelOptions, pageUrl =>
{
    var startedOn = DateTime.UtcNow;

    var request = System.Net.HttpWebRequest.Create(pageUrl);

    var responseTimeBefore = DateTime.UtcNow;

    try
    {
        var response = (System.Net.HttpWebResponse)request.GetResponse();
        responseCode = response.StatusCode.ToString();
        response.Close();
    }
    catch (System.Net.WebException ex)
    {
        // NOT SHOWN ... write to the error log
    }

    var responseTimeAfter = DateTime.UtcNow;

    var responseDuration = responseTimeAfter - responseTimeBefore;

    // NOT SHOWN ... write the response duration out to a file

    var endedOn = DateTime.UtcNow;

    var threadDuration = endedOn - startedOn;

    // sleep for one second
    var oneSecond = new TimeSpan(0, 0, 1);
    if (threadDuration < oneSecond)
    {
        System.Threading.Thread.Sleep(oneSecond - threadDuration);
    }
}
);

当我将MaxDegreeOfParallelism设置为低值(如10 everything )时,responseDuration保持在1到3秒之间。如果我将值增加到100 (如示例中所示),responseDuration会快速上升,直到大约300个请求之后,它已经达到25秒(并且还在上升)。

我想我可能做错了什么,所以我也用标准的Apache jMeter设置运行了web测试计划,并将用户设置为100。经过大约300个样本后,响应时间猛增到大约40秒。

我怀疑我的服务器是否达到了极限。服务器上的任务管理器显示,只使用了16 2GB中的2GB,处理器挂起的工作量约为5%。

  1. 我的客户端计算机上的同时连接的数量会不会受到某种限制?如果是的话,我该如何改变这种情况呢?
  2. 我是不是忘了在我的代码里做些什么?清理/密切联系?
  3. 难道是我的代码没问题,实际上是我的服务器无法处理流量吗?

作为参考,运行上述代码的客户端计算机正在运行Windows 7,并且与我正在测试的服务器位于同一网络上。服务器正在运行Windows 2008IIS7.5,是一台专用的8核16 is机器.

EN

回答 2

Stack Overflow用户

发布于 2012-12-10 18:42:00

只有当您试图限制用作程序策略一部分的核心数量时,才应该使用MaxDegreeOfParallelism。

默认情况下,并行库利用了最多的可用线程--因此,将此选项设置为任意数目将限制性能,这取决于运行它的环境。

我建议您尝试在不设置此选项的情况下运行此代码,这将提高性能。

MSDN的ParallelOptions.MaxDegreeOfParallelism属性 -阅读备注部分以获得更多信息。

票数 2
EN

Stack Overflow用户

发布于 2012-12-12 11:16:17

若干建议:

  1. 您录制的J流量计测试脚本有多大,您是否插入了一些思考时间?试验越大,负荷就越重。
  2. 确保在测试运行期间,局域网没有被竞争的流量所使用。有一个千兆以太网交换机应该是强制性的。
  3. 一定要使用2-3台从机,避免在Jmeter (如tree.You )中使用重结果记录器来最小化这些图表和结果。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13805525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档