0

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

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

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

我使用的服务器是 Java Caps 5.1.3 应用程序服务器,而我用来发出请求的库是 HttpUnit 1.6.2。


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

4

3 回答 3

2

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

1. 使用加速

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

2. 代码审查

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

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


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

  • 最大线程数
  • 最大进程
  • 最大会话计数

后续问题的答案

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

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

  • 斜坡上升
  • 思考时间
  • 调整黑白迭代
  • 交易组合
  • 并发用户数
于 2008-11-26T12:40:21.610 回答
2

后续问题的答案

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

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

  • 斜坡上升
  • 思考时间
  • 调整黑白迭代
  • 交易组合
  • 并发用户数
于 2008-11-26T14:21:21.873 回答
1

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

于 2008-11-26T12:57:34.570 回答