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

Asp.net 如何在负载/性能测试期间找到IIS要模拟的平均并发用户数?,asp.net,performance,iis-6,jmeter,logparser,Asp.net,Performance,Iis 6,Jmeter,Logparser,我正在使用JMeter进行负载测试。我将通过增加分布式JMeter测试用例中的线程数,并启动测试,来查找Web服务器可以处理的最大并发线程(用户)数 然后,我突然想到,虽然最大数量可能有用,但我的网站实际平均处理的用户数是我需要的使测试富有成效的数量 以下是有关我们设置的一些信息: 这是一个混合的.NET/经典ASP网站。登录后,将在这两个浏览器中为用户创建浏览器会话(超时) 每个会话在60分钟后超时 有没有办法使用这些信息、IIS日志、性能计数器和/或一些计算来帮助我确定我们在生产站点上处

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

然后,我突然想到,虽然最大数量可能有用,但我的网站实际平均处理的用户数是我需要的使测试富有成效的数量

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

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

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

我可以在这里看到一些选项

  • 使用Performance Monitor获取当前数字,或者让它全天记录并获取平均值。ASP.NET有一个计数器。根据经典ASP也有一个最新的请求,但我自己从来没有用过

  • 运行IIS日志以获取请求的总数以及每个请求花费的时间。我在想,如果你知道每小时有多少个请求,每个请求需要多长时间,你就可以得到平均有多少个请求同时运行


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

    您可以使用带有量化功能的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"
    
    报告的计数与线程或用户的计数不完全相同,但它们应该帮助您指向正确的方向


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

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

    • 最大CPU利用率
    • 最大内存使用量
    • 请求的最大响应时间
    • 您喜欢的其他关键参数
    选择参数确实是主观的,我个人无法提供太多的经验

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

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


    然而,这并不意味着你的网站在现实世界中可以容纳这么多的用户。到目前为止,没有任何模拟能够覆盖所有边缘情况。

    谷歌分析可能会帮助您了解每天有多少用户,以及发送页面所需的时间(2秒?和每天200个用户)?您可以使用负载测试仪,使用宏执行“真实”用户操作,包括点击之间的半随机时间暂停。有几种服务可以做到这一点。