7

我正在使用 JMeter 进行负载测试。我正在通过简单地增加分布式 JMeter 测试用例中的线程数并启动测试来寻找我们的网络服务器可以处理的最大并发线程(用户)数。

然后——让我感到震惊的是,虽然 MAX 数量可能有用,但我的网站平均实际处理的真实用户数量是我需要使测试富有成效的数量。

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

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

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

4

3 回答 3

4

您可以将 logparser 与 QUANTIZE 函数一起使用来确定合适时间间隔内的请求峰值数。

对于 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"

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

进行精确计数的最佳方法可能是使用性能计数器,但我不确定是否有任何标准的能像你想要的那样工作——你可能需要创建一个自定义计数器。

于 2012-02-22T04:26:01.780 回答
3

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

  1. 使用性能监视器获取当前数字或让它全天记录并获取平均值。ASP.NET 有一个Requests Current计数器。根据this page Classic ASP也有一个Requests current,但我自己从未使用过它。

  2. 通过Log Parser运行 IIS 日志以获取请求的总数以及每个请求所用的时间。我在想,如果您知道每小时有多少请求以及每个请求花费了多长时间,您就可以获得同时运行的平均数量。

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

于 2012-02-09T16:29:34.133 回答
2

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

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

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

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

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

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

于 2012-02-22T05:45:23.173 回答