主要观点:介绍了开放和封闭工作负载模型及协调遗漏问题,探讨了开放负载生成的优缺点,提出混合模型是测试真实世界系统的方法,且混合模型能避免协调遗漏。
关键信息:
- 封闭系统中系统处理完前一个工作后才接收新工作,如处理队列消息;开放系统中新工作会在系统处理其他事务时到达,如Web服务器服务静态文件。
- 协调遗漏是开放系统用封闭工作负载生成器测试时的测量问题,会导致性能测量误导,所有封闭工作负载生成器在测试开放系统时都会出现此问题。
- 开放负载生成器不会出现协调遗漏,但能测试的系统类型狭窄,如只能测试服务静态文件的Web服务器等。
- 混合模型结合了开放和封闭的特点,新用户按概率分布到达,单个用户受服务背压,需等待请求完成后再发送下一个,Artillery采用此模型,且输出延迟指标间隔可配置,能避免延迟异常被隐藏。
重要细节: - 举例说明用10个连接发送100个请求到Web服务器,若有10个请求在服务器不可用时暂停5秒发送,会导致90个请求耗时2ms,10个请求耗时5秒到1ms,负载生成器报告的p99延迟为1ms但无用。
- 提及Gil Tene在
wrk2
中开创的开放负载生成方法及其他采用此方法的工具。 - 以访问GitHub为例说明在有隐式服务器背压的场景下,恒定RPS无意义。
- 提供了关于工作负载模型的经典阅读资料,如“Open Versus Closed: A Cautionary Tale”的PDF和Gil Tene的“How NOT to Measure Latency”的YouTube视频,以及本博客基于的原始GitHub讨论线程链接。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。