最近在做接口测试,测一个上传服务接口的性能。
我测试并发用的是 go 写的脚本,里面的多并发用 goroutine,每个并发发送的次数则用循环同步上传。
比如测十个并发,每个并发发送二十次,就用十个 goroutine , 每个goroutine 中 for 循环二十次发送。
结果:
我在单台服务器上用 100 个并发,传 10 次 5.3M 的图片,也就是 100 * 10 ,结果是 30s/次请求。
我又用三台服务器请求,每台都100个并发,传十次(100*10),发现结果还差不多是 30s/次请求。
两次测试,不管是测试服务器还是上传图片服务器,cpu 和内存占用都不高。
从结果看:每个接口的耗费时间似乎是受限于测试机器的上传带宽,使测试没有测出上传服务器的性能极限。
问题:
- 为什么会出现三台机器一起并发得出的请求时间与一台机器类似的情况,不应该是三倍吗(90s),真的是因为带宽受限吗?还是其他原因
- 在我手头并没有几台服务器的情况下,我怎么才能测出上传服务的性能瓶颈?
- 正规流程的测试该是什么样子的,像这类测试应该监控哪些参数,来确定接口的瓶颈在哪里?
1 你那个图片上传的接口服务处理时间是一定的吧,和你几个服务器应该没关系吧
2 个人意见对改变图片大小和请求次数来测试性能瓶颈吧