Http Web服务负载测试

时间:2008-11-26 12:27:23

标签: web-services http load-testing

我有一个Web服务我正在尝试加载测试。我创建了一个程序,它生成线程来模拟连接到服务并发出请求的多个用户。每个线程在死亡之前发出“一定数量”的请求。每个新请求在准备就绪后立即生成 - 在获得响应和发出下一个请求之间几乎没有延迟。正在测试的Web服务调用同一服务器上的另一个Web服务。

此过程似乎可以在90个模拟用户中正常工作。然而,一旦我尝试了100个模拟用户,程序在大约6个处理完的请求后就会挂起。他们似乎没有做任何事情。模拟客户端挂起等待响应,Web服务未收到请求。需要重启服务器才能恢复。

这里发生了什么?我可以对服务器建立的连接数有限制吗?我应该尝试“加速”负载(现在我只是尽可能快地开火)?

我正在使用Java Caps 5.1.3应用服务器的服务器和我用来发出请求的库是HttpUnit 1.6.2。


跟进问题 加速时间有什么好处?为什么我不能在测试开始时将所有负载都推到服务器上?

3 个答案:

答案 0 :(得分:2)

看到这种情况可能有多种原因,您可以尝试以下方法找出原因。希望他们帮忙:

<强> 1。使用加速

使用适当的提升,比如至少1用户/ 2秒等。如果使用Ramp-up解决了您的问题,那么它绝对是一个连接计数问题。

<强> 2。代码审核

彻底检查您编写的加载注入代码,在某些情况下检查未发送的循环/线程。

您还可以使用分析工具,例如JENSOR找出哪种方法陷入死锁并导致服务器无响应。


另外,请检查Web服务器上的这些参数并进行调整并测试

  • MaxThreads
  • 进程数
  • MaxSessionCount

<强> Answer for Follow-up Question

加速模拟现实生活场景,同时为Web服务器提供喘息空间。在进行负载测试时,模式应该与现实生活相似,以获得准确和可扩展的预测。

在执行此操作时起最重要作用的参数是:

  • Ramp-up
  • 思考时间
  • 踱步b / w迭代
  • 交易组合
  • 否。并发用户

答案 1 :(得分:2)

回答后续问题

加速模拟现实生活场景,同时为Web服务器提供喘息空间。在进行负载测试时,模式应该与现实生活相似,以获得准确和可扩展的预测。

在执行此操作时起最重要作用的参数是:

  • Ramp-up
  • 思考时间
  • 踱步b / w迭代
  • 交易组合
  • 否。并发用户

答案 2 :(得分:1)

我认为您应该尝试使用JMeter进行负载测试。它有所有增加的东西。 This PPT presentation比较两者,所以你可以看到哪个更适合你。