首页 文章

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

提问于
浏览
6

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

然后 - 让我感到震惊的是,尽管MAX号可能很有用,但我网站实际处理的实际用户数是我需要的数量才能使测试变得富有成效 .

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

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

  • 每次会话在60分钟后超时 .

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

3 回答

  • 2

    我可以在这看到几个选项 .

    • 使用性能监视器获取当前数字或让它全天记录并获得平均值 . ASP.NET有一个Requests Current计数器 . 根据this page经典ASP也有一个请求当前,但我从来没有使用它自己 .

    • 通过Log Parser运行IIS日志以获取请求的总数以及每次请求的时间 . 我想如果你知道每小时有多少请求以及每个小时花了多长时间,你就可以得到平均有多少请求同时运行 .

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

  • 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"
    

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

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

  • 3

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

    • 最大CPU利用率

    • 最大内存使用量

    • 请求的最长响应时间

    • 您喜欢的其他关键参数

    选择参数是非常主观的,我个人无法提供太多经验 .

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

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

    但是,这绝不意味着您的网站在现实世界中可以占用这么多用户 . 到目前为止,没有模拟可以覆盖所有边缘情况 .

相关问题