最近刚接触一些性能测试方面的工作需求, 关于 TPS 的计算一直不太明白, 于是有了这贴......

场景:
运行一个 APi, 功能是用来计算和生成统计报告,所以执行速度较慢 (1s-100s 都有可能). 需要对它进行测试, 查看它在 1-100 个并行运行的过程中各项性能情况.

我查看了 Locust 的源码, 发现 Locust 中关于 TPS 的计算是通过每个响应回来之后然后把当前时间戳 (单位是秒) 作为 Key 去统计加 1, 从而统计出每秒的处理请求情况 (TPS). 然后页面返回 TPS 的时候是根据每 10 秒内的平均请求数量来返回, 问题是这样计算的话, 如果有个请求是经过 15 秒才返回, 那么对于这个请求只统计在了第二个 10 秒内, 1-10 秒好像就不计算在内了,(也有可能是我对 Locust 源码理解错了么)

不太理解, 求助大佬解惑.

问题 1:当平均请求波动在 10s 上下的时候, Locust 计算的 TPS 就会很失真么? 应该如何计算呢.

问题 2:假设发压机第一秒上了 10 个线程,持续运行某个 APi, 第 10s 增加一个线程, 继续持续运行, 第 20s 再增加一个线程.......依次规律运行 1 小时. 那么如何统计每秒的 TPS 呢?(最终需要生成 TPS 在线程增加的时候波动图)

感谢......


↙↙↙阅读原文可查看相关链接,并与作者交流