【发布时间】:2017-06-14 10:10:04
【问题描述】:
我最近使用 gatling.io 对我的 api 服务器进行负载测试。在测试期间,有一些选项可以设置,例如每秒并发用户数。
我不明白这些工具是如何产生这种负载的。他们如何能够创建到我的服务器的 200 个并发连接并点击它?
我正在寻找一个描述它是如何实现的答案,他们是否使用线程、套接字编程等。 谢谢。
【问题讨论】:
标签: performance load gatling
我最近使用 gatling.io 对我的 api 服务器进行负载测试。在测试期间,有一些选项可以设置,例如每秒并发用户数。
我不明白这些工具是如何产生这种负载的。他们如何能够创建到我的服务器的 200 个并发连接并点击它?
我正在寻找一个描述它是如何实现的答案,他们是否使用线程、套接字编程等。 谢谢。
【问题讨论】:
标签: performance load gatling
Gatling 在内部使用Akka framework,其中每个虚拟用户都表示为Akka actor。
Akka 是一个用于异步 执行的框架。这意味着我们不会浪费和暂停等待响应的线程,而是使用它来完成其他任务——在这种情况下是其他虚拟用户。执行时间由scheduler 管理,执行本身由dispatcher 管理
考虑到在某些环境中,单个 JVM 线程堆栈可以达到 2 Mb 甚至更大,为 500 个用户中的每个用户创建一个线程仅用于线程就需要大约 1 Gb 的内存。请参阅here for more information,了解为什么创建大量线程是一个坏主意。
总之,使用异步编程来实现如此高的并发虚拟用户吞吐量是必不可少的。
【讨论】: