用于负载测试 HTTP 服务器的工具?

Dav*_*ver 39 http load-testing

我不得不多次对 HTTP 服务器/Web 应用程序进行负载测试,每次我都对我能够找到的工具的质量感到不知所措。

那么,当您对 HTTP 服务器进行负载测试时,您使用什么工具?下次我必须做的时候,我最有可能做错的事情是什么?

Cha*_*ant 24

JMeter是免费的。

Mercury Interactive Load Runner 非常好而且非常昂贵。


Por*_*man 21

我觉得非常有资格回答这个问题,因为我现在的公司需要模拟 25,000 个同时连接到我们的网络服务器(我们提供在线广告)。

对于极高容量的负载测试,Httperf是最佳选择。它是免费的,根据我们的经验,它可以在同一硬件上模拟 JMeter 或 STA 的更多同时连接。

编辑:

以防万一您好奇,我们在低功耗、廉价、超小型 Optiplex 330 上模拟每秒 3500 个请求。这些小盒子仅售 280 美元,我们将其中的一堆连接起来运行Httperf 点播。相比之下,JMeter 在这个硬件上只能推送大约 800-900 请求/秒。


Ste*_*son 20

如果您只想在 Web 服务器上一次向单个 URL 发送负载,请下载 Apache AB。它带有 Apache HTTP 服务器。

简单命令

ab -n 10000 -c 10 http://serverfault.com/questions/2107/tools-for-load-testing-http-servers
Run Code Online (Sandbox Code Playgroud)

将运行 10000 个请求,并发 10 个用户。

如果您想记录浏览会话,请投票并接受 jmeter 答案。Jmeter 非常棒,它可以扩展到许多可以抛出巨大负载的测试机器。

  • 请记住,ab 的 -n 是在停止发送请求之前收到的响应数。当您增加并发性时,线程仍在计算响应之前发送请求。以上实际上会发送大约 10005 个请求。JMeter 不会遇到这个问题。 (2认同)

Jau*_* Ho 8

Tsung,一个基于 Erlang 的工具。

http://www.softwareqtest.com/qatweb1.html#LOAD上还有一长串工具


小智 6

为了快速测试,您可以使用 curls 序列和 URL 集。例如,假设我们要对 Google 运行负载压力测试,我们可以运行...

curl -s "http://google.com?[1-1000]"
Run Code Online (Sandbox Code Playgroud)

这将使 1000 次调用 google ie

http://google.com?1  
http://google.com?2  
http://google.com?3 
... 
http://google.com?1000
Run Code Online (Sandbox Code Playgroud)

这在如何使用 curl 快速对 Web 服务器进行压力测试中有更详细的讨论


Mat*_*eau 5

您将需要设置不同的测试:

  • 正常测试,模拟用户的行为。您将实现思考时间(页面之间没有 http fury 1)。一种方法是记录网络会话,这样您将有实际的时间来完成/阅读每个页面。负载将逐步增加,直到您达到生产中的平均当前负载
  • 破裂测试:与之前相同,但增加负载直到出现第一个 http 500 错误。目标是知道在它损坏之前您可以管理多少负载
  • 长时间运行测试。您将第一个场景运行 12 小时,以确保不会出现内存泄漏或性能随时间下降的情况。

在每次测试之后/之前,您必须像以前一样放回平台:恢复数据库,重新启动以清理内存和缓存。

您还将进行热身:在真正的测试之前启动一次场景,以便编译网页,建立与数据库的连接。否则,第一个电话在您的统计数据中总是很糟糕。

您可以增加复杂性,例如:

  • 使用不同的场景(访客/客人、成员),它们的表现会有所不同。
  • 模拟不同的带宽访问
  • 随机搜索词和思考时间。

最后一件重要的事情:您必须保存所有已完成的场景,以便能够以完全相同的方式再次制作它们,以便您可以将性能与之前的测试进行比较。