自从采用了中台架构,看到内部服务间无比复杂的调用链路,内心对平台性能就是七上八下的,一直没时间做性能摸底,刚好7月份满足了业务的上线需求,又经过1个多月的打磨,现在终于能腾出手来看看性能情况了。来吧!压抑吧!

先来个查询的场景,2000并发,3个阶梯,10分钟跑起来,话说现在云服务真TM好用,考虑又周到,绝对不是打广告哈!阿里云的压测服务用起来还是比较给力的,多机输送流量,压起来杠杠的,花钱也是杠杠的~_~!

 

CPU、负载都上来了:

 

没对啊,TPS这么低???这不科学,多试几个接口还是一样,到底哪儿在作妖?空口再测一次,有点点提高,难道是gateway?跳过网关测,原来真是,gateway吃掉了将近65%的TPS性能

 

参考网上公开的数据,确实网关对性能的损耗是很大的,spring gateway性能表现要好于zuul,但实际损耗也蛮大的,没办法,这就是使用微服务的代价,不过现在都容器化了,多开几个gateway容器也能一定程度上缓解这个问题,同时新版本gateway性能要比老版本表现好些,如果实在接受不了的话,据说kong接近于原生nginx代理的性能,但是开发使用起来复杂度要高些。

这里附上网上其他大神的测试结果,(测试版本未知,环境未知,仅作参考,请勿拍砖):

服务平均时延(ms)RPS性能损失
Origin2.9433014.700
Netflix Zuul12.3913175.2160.09%
Spring Cloud Gateway4.9521685.1434.32%
Kong4.0124397.3526.10%

 

单实例服务,不经过gateway,结果:

 

4服务实例,不经过gateway,结果:

后端单实例服务,8个gateway实例:

做个总结,代码优化空间较大: 

场景服务实例数成功率并发数平响msTPS峰值TPSCPUDB CPUDB连接数接收KB/s发送KB/s备注
空口有网关198%100052914631759      
199.99%20001132417817455      
2100%200046725473173      
4100%200020859487249      
空口无网关1100%2000801217415659      
2100%2000461316116286      
299.81%40001082377431854      
空口升级网关1100%200028836064877      
下单195.06%5002349179       
196%10004241177       
188%10003709193       
商品列表页1 10002560258 0.890.367~11922~118达到带宽上限
4 10001725413 0.840.45197~12680~120达到带宽上限
8 10001534426       
16 10001397465       
查询订单1 100019226079910.710.2232691  
4 1000585197729140.80.22342210  

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐