Http Web服务负载测试
我有一个Web服务,我试图加载测试。我创建了一个程序,它产生线程来模拟连接到服务和发出请求的多个用户。每个线程在它死亡之前都会产生“一定数量”的请求。每一个新请求都会在准备就绪后立即完成 - 在获得响应和发出下一个请求之间几乎没有任何延迟。被测试的Web服务在同一台服务器上调用另一个Web服务。Http Web服务负载测试
这个过程似乎可以正常工作到90个模拟用户。但是,一旦我尝试了100个模拟用户,程序就会在大约6次处理请求后挂起。他们似乎没有做任何事情。模拟客户端挂起等待响应,Web服务未收到请求。它需要服务器重新启动才能恢复。
这是怎么回事?我可以对服务器进行连接的数量是否有限制?我应该尝试“加大”负载(现在我只是尽可能快地发射它们)?
我正在使用我们的服务器Java Caps 5.1.3应用程序服务器和我用来使请求的库是HttpUnit 1.6.2。
后续问题 什么的加速时间有什么好处?为什么我无法在测试开始时将所有负载都推送到服务器?
看到这种情况可能有多种原因,您可以尝试下面的方法来找出原因。希望他们帮助:
1.使用斜坡上升
使用一个体面的斜升说ATLEAST 1USER/2秒等。如果使用Ramp-up解决了您的问题,那么它肯定是一个连接计数问题。
2.代码审查
彻底检查在某些情况下,你已经写了负载注入代码,unexited循环/线程。
您还可以使用分析工具,例如JENSOR找出哪个方法进入死锁并导致服务器无响应。
此外,检查你的web服务器上的这些参数和调整它们和测试
- MaxThreads
- 进程数
- MaxSessionCount
加速模拟真实场景,同时为Web服务器提供呼吸空间。在进行负载测试时,模式应该与真实生活相似,以获得准确和可扩展的预测。
这在这样发挥的最重要的部分参数如下:
- 斜坡上升
- 思考时间
- 起搏的B/W迭代
- 事务混合
- 号并发用户
回答后续问题
斜升模拟现实生活场景,并在同一时间提供了一个喘息的Web服务器。在进行负载测试时,模式应该与真实生活相似,以获得准确和可扩展的预测。
这在这样发挥的最重要的部分参数如下:
- 斜坡上升
- 思考时间
- 起搏的B/W迭代
- 事务混合
- 号并发用户