负载和性能测试工具如何在幕后工作?
How does load and performance testing tools work behind the scenes?
我最近使用 gatling.io 对我的 api 服务器进行负载测试。在测试期间,有一些选项可以设置,例如,每秒并发用户数。
我不明白这些工具是如何产生这种负载的。他们如何能够创建假设 200 个并发连接到我的服务器并点击它?
我正在寻找描述其实现方式的答案,是否使用线程、套接字编程等。
谢谢。
加特林使用 Akka framework internally where every virtual user is represented as an Akka actor。
Akka 是 异步 执行的框架。这意味着我们不会浪费和挂起等待响应的线程,而是用它来完成其他任务——在这种情况下是其他虚拟用户。执行时间由 scheduler and execution itself by the dispatcher
管理
考虑到在某些环境中,单个 JVM 线程堆栈可能会达到 2 Mb 甚至更大,为 500 个用户中的每个用户创建一个线程将花费大约 1 Gb 的内存用于线程。请参阅 here for more information 为什么创建大量线程不是一个好主意。
综上所述,要实现如此高的并发虚拟用户吞吐量,使用异步编程是必不可少的。
我最近使用 gatling.io 对我的 api 服务器进行负载测试。在测试期间,有一些选项可以设置,例如,每秒并发用户数。
我不明白这些工具是如何产生这种负载的。他们如何能够创建假设 200 个并发连接到我的服务器并点击它?
我正在寻找描述其实现方式的答案,是否使用线程、套接字编程等。 谢谢。
加特林使用 Akka framework internally where every virtual user is represented as an Akka actor。
Akka 是 异步 执行的框架。这意味着我们不会浪费和挂起等待响应的线程,而是用它来完成其他任务——在这种情况下是其他虚拟用户。执行时间由 scheduler and execution itself by the dispatcher
管理考虑到在某些环境中,单个 JVM 线程堆栈可能会达到 2 Mb 甚至更大,为 500 个用户中的每个用户创建一个线程将花费大约 1 Gb 的内存用于线程。请参阅 here for more information 为什么创建大量线程不是一个好主意。
综上所述,要实现如此高的并发虚拟用户吞吐量,使用异步编程是必不可少的。