如何在加载/性能测试期间找到IIS要模拟的平均并发用户数?

时间:2012-02-07 17:37:41

标签: asp.net performance iis-6 jmeter logparser

我使用JMeter进行负载测试。我通过简单地增加分布式JMeter测试用例中的线程数并开始测试来查找我们的Web服务器可以处理的并发线程(用户)的最大数量。

然后 - 让我感到震惊的是,虽然MAX号码可能很有用,但我网站实际处理的 REAL 用户数是我需要的数量才能让测试变得富有成效。< / p>

以下是有关我们设置的一些信息:

  • 这是一个混合的.NET / Classic ASP站点。登录后,将为用户创建浏览器会话(带超时)。
  • 每个会话在60分钟后超时。

有没有办法使用这些信息,IIS日志,性能计数器和/或一些计算来帮助我确定我们在生产站点上处理的平均并发用户数?

3 个答案:

答案 0 :(得分:4)

您可以使用带有QUANTIZE功能的logparser来确定合适时间间隔内的峰值请求数。

对于10秒钟的窗口,它将类似于:

logparser "select quantize(to_localtime(to_timestamp(date,time)), 10) as Qnt,
    count(*) as Hits from yourLogFile.log group by Qnt order by Hits desc"

报告的计数与线程或用户不完全相同,但它们应该可以帮助您指出正确的方向。

执行精确计数的最佳方法可能是使用性能计数器,但我不确定任何标准计数器是否可以像您希望的那样工作 - 您可能需要创建自定义计数器。

答案 1 :(得分:3)

我可以在这里看到几个选项。

  1. 使用性能监视器获取当前数字或让它全天记录并获得平均值。 ASP.NET有一个Requests Current计数器。根据{{​​3}}经典ASP也有一个请求当前,但我自己从未使用它。

  2. 通过this page运行IIS日志以获取请求总数以及每次请求的时长。我想如果你知道每小时有多少请求以及每个小时需要多长时间,你就可以得到平均有多少请求同时运行。

  3. 另外,请记住,并发用户与服务器上的并发线程并不完全相同。例如,在下载像图像这样的内容时,每个用户将激活多个线程。之后,当服务器空闲时,用户将在页面上停留几分钟。

答案 2 :(得分:2)

我的建议是先定义停止条件,例如

  • 最大CPU利用率
  • 最大内存使用量
  • 请求的最长响应时间
  • 您喜欢的其他关键参数

选择参数真的很主观,我个人无法提供太多经验。

其次,您可以查看性能计数器或IIS日志是否可以映射到参数。然后设置适当的映射。

第三,您可以通过模拟N个用户(线程)开始测试,并查看是否达到了停止条件。如果没有命中,你可以去更高的数字。如果命中,您可以使用较小的数字。递归地你会发现一个粗略的数字。

然而,这绝不意味着您在现实世界中的网站可以吸引这么多用户。到目前为止,没有任何模拟可以涵盖所有边缘情况。