Golang RPC性能测试

2023-11-16

最近刚好要使用Golang的RPC,因此对Golang标准库的RPC进行了一下测试,看看其性能到底如何。RPC服务端和客户端的实现完全使用RPC的net/rpc标准库,没有经过特殊的优化,主要针对下面三个场景进行测试。测试之前需要先说明一下,Go的rpc连接是支持并发请求的,就是说一个一个连接可以并发的发送很多个请求,不像http协议一问一答的模式。

测试环境

操作系统:Centos 6.8 (Linux 2.6.32)
内存:32G
核数:双CPU, 一共12核
CPU型号:Intel(R) Xeon(R) CPU E5645 @ 2.40GHz
Golang: 1.7.4

场景

测试的场景主要是下面两个指标
* QPS指标
* 单个个连接保证一个并发,随着该并发请求数增加,QPS的变化
* 单个连接(Client), 单个并发请求10w, 随着并发数的增加,QPS的变化
* 单个连接并发数固定(第一个测试的最优值),增加连接数,QPS的变化

  • 单机Server的并发数(同时连接数)
    • 单机Server, 测试所能接收的连接数

QPS指标测试中,第一个设置是为了测试单个连接的并发数

实现

Server端的实现使用tcp协议,监听4200端口,循环等待连接,每当检测到请求时,启动一个goroutine去处理该连接,注册的服务执行一个简单的乘法操作。

//Service
type Args struct {
    A, B int
}

type Quotient struct {
    Quo, Rem int
}

type Arith int

func (t *Arith) Multiply(args Args, reply *int) error {
    *reply = args.A * args.B
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang RPC性能测试 的相关文章

随机推荐