Http Web 服务负载测试

Posted

技术标签:

【中文标题】Http Web 服务负载测试【英文标题】:Http Web Service Load Test 【发布时间】:2008-11-26 12:27:22 【问题描述】:

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

这个过程在最多 90 个模拟用户的情况下似乎都能正常工作。然而,一旦我尝试了 100 个模拟用户,程序会在大约 6 个总处理请求后挂起。他们似乎什么也没做。模拟客户端挂起等待响应,Web 服务未接收请求。需要重启服务器才能恢复。

这里发生了什么?我可以与服务器建立的连接数是否有限制?我是否应该尝试“增加”负载(现在我只是尽可能快地发射它们)?

我使用我们的 Java Caps 5.1.3 应用程序服务器和用于发出请求的库是 HttpUnit 1.6.2。


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

【问题讨论】:

【参考方案1】:

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

1.使用加速

使用适当的加速,例如至少 1 个用户/2 秒左右。如果使用 Ramp-up 可以解决您的问题,那么它肯定是连接数问题。

2。代码审查

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

您还可以使用分析实用程序,例如JENSOR 找出哪个方法进入死锁并导致服务器无响应。


另外,检查您的网络服务器上的这些参数并调整它们并进行测试

最大线程数 最大进程数 MaxSessionCount

Answer for Follow-up Question

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

在此过程中发挥最重要作用的参数是:

加速 思考时间 调整黑白迭代 交易组合 没有。并发用户数

【讨论】:

【参考方案2】:

后续问题解答

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

在此过程中发挥最重要作用的参数是:

加速 思考时间 调整黑白迭代 交易组合 没有。并发用户数

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于Http Web 服务负载测试的主要内容,如果未能解决你的问题,请参考以下文章

Web服务中的负载测试

JMeter负载测试的变量输入?

Visual Studio Web 负载测试

如何使用 java 对 Web 服务进行负载测试?

Jmeter实现简单web负载测试

负载测试应用程序调用外部 http 服务