我有一个Web服务我正在尝试加载测试。我创建了一个程序,它生成线程来模拟连接到服务并发出请求的多个用户。每个线程在死亡之前发出“一定数量”的请求。每个新请求在准备就绪后立即生成 - 在获得响应和发出下一个请求之间几乎没有延迟。正在测试的Web服务调用同一服务器上的另一个Web服务。
此过程似乎可以在90个模拟用户中正常工作。然而,一旦我尝试了100个模拟用户,程序在大约6个处理完的请求后就会挂起。他们似乎没有做任何事情。模拟客户端挂起等待响应,Web服务未收到请求。需要重启服务器才能恢复。
这里发生了什么?我可以对服务器建立的连接数有限制吗?我应该尝试“加速”负载(现在我只是尽可能快地开火)?
我正在使用Java Caps 5.1.3应用服务器的服务器和我用来发出请求的库是HttpUnit 1.6.2。
跟进问题 加速时间有什么好处?为什么我不能在测试开始时将所有负载都推到服务器上?
答案 0 :(得分:2)
看到这种情况可能有多种原因,您可以尝试以下方法找出原因。希望他们帮忙:
<强> 1。使用加速
使用适当的提升,比如至少1用户/ 2秒等。如果使用Ramp-up解决了您的问题,那么它绝对是一个连接计数问题。
<强> 2。代码审核
彻底检查您编写的加载注入代码,在某些情况下检查未发送的循环/线程。
您还可以使用分析工具,例如JENSOR找出哪种方法陷入死锁并导致服务器无响应。
另外,请检查Web服务器上的这些参数并进行调整并测试
<强> Answer for Follow-up Question 强>
加速模拟现实生活场景,同时为Web服务器提供喘息空间。在进行负载测试时,模式应该与现实生活相似,以获得准确和可扩展的预测。
在执行此操作时起最重要作用的参数是:
答案 1 :(得分:2)
回答后续问题
加速模拟现实生活场景,同时为Web服务器提供喘息空间。在进行负载测试时,模式应该与现实生活相似,以获得准确和可扩展的预测。
在执行此操作时起最重要作用的参数是:
答案 2 :(得分:1)
我认为您应该尝试使用JMeter进行负载测试。它有所有增加的东西。 This PPT presentation比较两者,所以你可以看到哪个更适合你。