API 对 10k 用户进行负载测试,我选择 jmeter

API load testing with 10k users and I am choosing jmeter

我有 10k 用户测试 api 的要求。我选择的是:

  1. Jmeter
  2. Linux 服务器安装 Jmeter 并向 10k 用户抛出负载
  3. 现在一个节点

将执行 API 操作,例如:

我正在考虑使用上面的 API 对 10k 用户进行测试,上面的工具就足够了,或者我应该寻找其他选项,如 loadimpact、loader 或 blazemeter?

整个答案是详尽的它取决于

您可以做的最好的事情是 运行 PerfMon 代理在服务器上生成负载以及在服务器上 运行ning 系统正在测试中。

这样您应该可以看到(在 CPU 利用率和空闲内存统计信息中)您是否已经达到提供 API 的服务器所能做的最大程度,或者它是否是您的负载生成器 运行 精疲力尽。在第一种情况下,您会根据 运行 的硬件和配置获得一些 readline。在第二个中,您有指示使用 1 个以上的盒子来生成负载或调查设置和选项。

请仔细查看 PerfMon JMeter plugin 了解详细信息。

如果您在谈论 API,您应该考虑 "requests per second" 而不是 "users",因为我强烈怀疑最终用户会向 API 端点发送请求通过 curl or Postman

无论您的目标是 "users" 还是 "requests per second",只有您 可以回答,因为它取决于许多参数,例如:

  • 您的机器硬件规格
  • 软件规格(OS/JVM/JMeter 版本和体系结构)
  • 测试的性质(request/response 大小、pre/post processors, assertions 的数量等)

所以你应该如下操作:

  1. 确保您关注 JMeter Best Practices
  2. 确保监控 运行 JMeter(CPU、RAM、Swap、网络、磁盘)节点的基线健康指标,您可以为此使用 JMeter PerfMon Plugin
  3. 从最小负载开始(1 个虚拟用户或每秒 1 个请求)并增加负载,直到您的机器开始交换或任何其他健康指标超过最大可用容量的 80%。一旦发生,请查看活动线程(Active Threads Over Time listener) or throughput (Transactions Per Second) - this is the maximum number of users or hits per second you can produce on particular this host for particular this test. If it is enough - you're good to go, if not - you will have to switch to Distributed testing

有关详细信息,请参阅 What’s the Max Number of Users You Can Test on JMeter? 文章。