Go Micro性能测试
基于我对网上搜索过后的结果,大多数对Micro的测试都是基于V1版本的,当然V1版本的性能也确实拉跨,被吊打的不得了,那V2版本是否有相应的进步呢?这点没有在网上搜索到,那就只能自己动手改造一个了。
看这篇博文中,2020 新春流行的RPC框架性能大比拼。Micro RPC性能可以说是垫底了,根据之前的仓库,进行更改后,https://github.com/younglifestyle/rpcx-benchmark , 得到Micro V2版本的测试代码。
与之对应的Go RPC原生RPC性能则是:
可以看到,对比之下,性能不可谓不尴尬,性能可以说是很拉跨了。
另外,看到这个仓库,Micro测试。修改为Micro V2版本,https://github.com/younglifestyle/rpcx-benchmark。
我的机器是Intel(R) 2.00GHz
,24核心,36G内存,我只使用了在同一台机器运行Client/Server。
20个客户端,CPU占用在2.2%。总体来看,这也难怪仓库给出的结论是QPS太低。
在博主的一篇博客中提到测试网络库的一些思考:思考(五十九):如何正确的测试网络库。
- 不能一味的追求 qps ,要考虑到留 CPU 给业务逻辑去算
- 因此在主流配置上,网络库能上 10w qps 且 CPU 占用较低,就合格了
- 云机上跑服务完全可行
后续
在博主的博文micro/go-micro 介绍与源代码分析(五):回显测试分析网络性能,有提到过对Micro性能提出的issue,不过官方似乎并没改进。(该博主对go micro的性能进行过优化)
我提过issue,得到asim哥的回答是:
https://github.com/asim/nitro/issues/2075#issuecomment-725903901
V2 is unsupported. V3 is non-commercial. Performance is not my concern at this time.
这里我还找到一个issue,asim回答别人提高性能的一个解答,至于实际效果怎么样,我有时间将会进行一波尝试。
https://github.com/asim/nitro/issues/129#issuecomment-256572499
Each request does the following:
- Lookup service discovery for service
- Select node from service list
- Create new connection to node
- Make request
- Teardown connection
If you want more performance you can use the caching selector https://godoc.org/github.com/micro/go-micro/selector/cache and client side connection pooling https://godoc.org/github.com/micro/go-micro/client#PoolSize.
You can either do this in code or with flags like so:
1
2
3 > --selector=cache # enables in memory caching of discovered nodes
> --client_pool_size=10 # enables the client side connection pool
>
If you want to discuss further please join the slack.
本文标题:Go Micro性能测试
文章作者:小师
发布时间:2020-11-13
最后更新:2022-05-04
原始链接:chunlife.top/2020/11/13/Go-Micro性能测试/
版权声明:本站所有文章均采用知识共享署名4.0国际许可协议进行许可