• K6压测工具:
  • 能够利用Go的性能优化,也就意味着内存利用率大大降低,k6中的一个线程不会超过100kb,而JMeter使用的JVM线程则需要默认1MB,是k6的十倍。
  • 负载测试工具运行虚拟用户的最简单也是最常见的方法是将一个虚拟用户分配给一个内核或操作系统线程,一个线程一个虚拟用户模式存在严重缺陷,当虚拟用户正在等待响应或正在执行sleep()命令时,线程会被阻止,无法运行其进程。
  • 在k6中,每个虚拟用户都在goroutine而不是线程上运行,这有什么区别呢?
  • goroutines可以由Go Scheduler控制,它就像一个交通警察,它通过“work stealing”和线程之间的工作交接,重用闲置的线程并智能地分配工作,这与构建负载均衡器的原理相同,监督工作流程的外部监视器可提高总体绩效,
  • Go在本质上以许多编程语言都没有的方式实现了负载平衡,这使其非常适合于负载测试工具。

K6工具的优势:

  • 没有GUI意味着在负载测试期间没有资源开销
  • 线程模型而言:
  • JMETER:1个线程1个虚拟用户:性能较慢,资源成本较高
  • K6:一个Goroutine 1个虚拟用户:性能较快,资源成本更低
  • K6下包含的Executor