基准测试

基准测试代码在rpcx-ecosystem/rpcx-benchmark

相同测试环境、测试数据和测试参数,测试了grpc、rpcx、dubbo、motan、thrift和go-micro。

基于我之前的测试,dubbo、motan和go-micro的性能较低,因此他们的最新测试没有列在此处,你可以使用相同的基准测试代码来测试他们。

测试逻辑

使用protobuf作为所有测试的编解码器。proto文件是benchmark.proto

syntax = "proto2";

package main;

option optimize_for = SPEED;

message BenchmarkMessage {
   required string field1 = 1;
   optional string field9 = 9;
   optional string field18 = 18;
   optional bool field80 = 80 [default=false];
   optional bool field81 = 81 [default=true];
   required int32 field2 = 2;
   required int32 field3 = 3;

   ......
}

客户端通过设置每个字段生成一个请求,请求的大小是518字节。

服务器接收请求并设置第一个字段为“OK”、第二个字段为100,然后服务器返回该请求给客户端。

以下的两个选项可以并行和请求数量。

测试环境

  • CPU:Intel Xeon CPU E5-2630 v3 @ 2.40GHz, 32核
  • 内存:32G
  • Go:1.9.2
  • OS:CentOS 7 / 3.10.0-229.el7.x86_64

客户端和服务器安装在同一台机器中。

测试结果

TPS

对于5000并发,rpcx可以达到176894传输/秒TPS,但是grpc-go只达到了105219传输/秒。

并发 RPCX GRPC-GO
5000 176894 105219
2000 161660 109245
1000 148227 111351
100 145479 93447

延迟:平均时间

并发 RPCX GRPC-GO
5000 27 47
2000 12 18
1000 6 8
100 0 1

延迟:中间值时间

并发 RPCX GRPC-GO
5000 3 42
2000 7 15
1000 5 7
100 0 0

results matching ""

    No results matching ""