美文网首页互联网科技
RPC Benchmark Round 5

RPC Benchmark Round 5

作者: 鲁小憨 | 来源:发表于2019-02-11 23:02 被阅读54次

测试说明

  • 仅限于 Java
  • 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s
  • 每次运行前都会执行 killall java, 但没有在每轮测试时重启操作系统
  • 所有类库版本在发布时都是最新的, 除非存在 bug
  • 所有框架都尽量参考该项目自带的 Benchmark 实现
  • 将会一直持续, 不定期发布测试结果

测试用例

  1. boolean existUser(String email), 判断某个 email 是否存在
  2. boolean createUser(User user), 添加一个 User
  3. User getUser(long id), 根据 id 获取一个用户
  4. Page<User> listUser(int pageNo), 获取用户列表

运行结果

生成时间: 2019-02-11 21:56:27
硬件环境: 阿里云 ic5 ecs.ic5.2xlarge 8vCPU 8GB Intel Xeon(Skylake) Platinum 8163 2.5GHz 2.5Gbps 80万PPS
软件环境: Ubuntu x64 18.04, OpenJDK 64-Bit Server VM 11.0.2+9
启动参数: java -server -Xmx1g -Xms1g -XX:+UseG1GC

existUser

framework thrpt (ops/ms) avgt (ms) p90 (ms) p99 (ms) p999 (ms)
netty 164.575 0.194 0.259 0.344 0.442
turbo-rpc 161.511 0.199 0.262 0.353 0.452
servicecomb 110.166 0.293 0.34 0.418 1.288
thrift 101.398 0.31 0.597 1.12 1.626
undertow 89.628 0.363 0.82 1.425 1.907
turbo-rest 85.811 0.371 0.791 1.356 2.009
armeria 82.97 0.389 0.746 1.198 2.52
undertow-async 80.064 0.407 0.9 1.559 2.785
motan 77.789 0.413 0.554 0.808 4.043
springwebflux 55.141 0.59 0.729 0.831 4.071
springboot-undertow 49.449 0.656 0.821 5.03 17.138
rapidoid 48.622 0.714 451.412 905.97 1350.566
sofa 46.329 0.693 0.899 1.37 5.587
springboot 42.591 0.775 1.063 4.719 11.193
hprose 40.307 0.81 0.506 2.419 44.237
grpc 24.928 1.31 1.606 1.733 2.114
dubbo NaN NaN NaN NaN NaN
dubbo-kryo NaN NaN NaN NaN NaN

createUser

framework thrpt (ops/ms) avgt (ms) p90 (ms) p99 (ms) p999 (ms)
netty 154.911 0.209 0.268 0.356 0.463
turbo-rpc 147.889 0.217 0.284 0.378 0.509
servicecomb 104.836 0.307 0.36 0.449 1.384
thrift 97.385 0.33 0.633 1.186 1.735
undertow 86.65 0.353 0.809 1.391 1.964
turbo-rest 84.658 0.379 0.811 1.38 2.273
armeria 79.6 0.397 0.652 1.112 2.826
undertow-async 78.527 0.413 0.9 1.54 2.843
motan 73.332 0.429 0.589 0.856 4.603
springwebflux 52.109 0.619 0.756 0.87 4.284
springboot-undertow 45.175 0.713 1.047 4.424 13.785
springboot 42.268 0.792 1.079 4.702 11.796
sofa 40.143 0.796 0.994 1.376 5.571
hprose 36.748 0.961 0.546 41.878 44.433
dubbo 24.382 1.317 1.679 1.901 3.998
dubbo-kryo 23.351 1.352 1.751 1.896 19.464
grpc 22.752 1.366 1.622 1.759 2.283
rapidoid 0.249 143.886 2336.227 3229.614 3670.016

getUser

framework thrpt (ops/ms) avgt (ms) p90 (ms) p99 (ms) p999 (ms)
netty 151.653 0.212 0.278 0.383 0.492
turbo-rpc 147.862 0.215 0.292 0.391 0.496
servicecomb 106.251 0.306 0.359 0.449 1.376
thrift 97.936 0.331 0.631 1.182 1.761
undertow 85.706 0.371 0.827 1.425 1.722
turbo-rest 82.729 0.389 0.857 1.454 2.13
armeria 82.262 0.4 0.721 1.128 2.384
undertow-async 79.868 0.411 0.873 1.493 1.997
motan 72.961 0.447 0.569 0.834 4.53
springwebflux 52.11 0.619 0.752 0.849 3.322
hprose 50.001 0.667 0.734 1.075 42.336
rapidoid 46.558 0.767 448.791 897.581 1367.2
springboot-undertow 45.495 0.711 0.898 5.358 19.595
sofa 40.511 0.801 1.017 1.364 6.398
springboot 39.208 0.829 1.157 4.997 11.747
dubbo 24.413 1.305 1.45 1.706 3.228
grpc 24.187 1.266 1.583 1.755 2.251
dubbo-kryo NaN NaN NaN NaN NaN

listUser

framework thrpt (ops/ms) avgt (ms) p90 (ms) p99 (ms) p999 (ms)
netty 73.303 0.431 0.909 1.223 2.09
turbo-rpc 67.42 0.456 1.155 1.382 1.991
thrift 62.248 0.52 0.977 1.872 4.235
servicecomb 54.647 0.583 0.806 1.219 3.912
undertow 52.255 0.611 1.438 2.347 5.784
undertow-async 50.235 0.627 1.55 2.687 6.717
armeria 48.241 0.661 1.039 1.855 6.197
motan 44.201 0.723 0.985 1.458 5.972
springwebflux 38.353 0.834 1.006 1.257 5.333
turbo-rest 36.102 0.883 2.001 4.186 7.995
grpc 27.286 1.166 1.286 1.389 4.16
springboot-undertow 27.184 1.158 1.475 7.406 19.431
rapidoid 26.665 1.44 448.791 892.338 1780.482
springboot 25.04 1.258 1.712 6.267 11.78
hprose 22.529 1.384 1.513 1.819 24.62
dubbo-kryo 16.52 1.904 1.997 2.499 42.729
sofa 12.276 2.622 3.822 7.135 12.321
dubbo 3.716 8.727 9.404 10.207 28.312

更新说明

  1. 硬件升级到8核
  2. jdk 升级为 AdoptOpenJDK-11.0.2
  3. 各个框架均升级到最新版本

免责声明

  • 能力所限错误在所难免, 本测试用例及测试结果仅供参考
  • 如果你认为 xxx 框架的代码或配置存在问题,那么欢迎发起 Pull Request
  • 利益相关: 本测试用例作者同时为 turbo undertow-async 的作者

快速链接

往期评测:
RPC Benchmark Round 4
RPC Benchmark Round 3
RPC Benchmark Round 2
RPC Benchmark Round 1

测试说明:
rpc-benchmark 测试说明
rpc-benchmark 项目代码

相关文章

  • RPC Benchmark Round 5

    测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...

  • 怎样对 RPC 进行有效的性能测试

    在 RPC Benchmark Round 1 中 turbo 的成绩一骑绝尘,实力碾压众 rpc 框架。对此,很...

  • RPC Benchmark Round 4

    测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...

  • RPC Benchmark Round 3

    测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...

  • RPC Benchmark Round 2

    测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...

  • RPC Benchmark Round 1

    几乎所有的 RPC 框架都宣称自己是“高性能”的, 那么实际结果到底如何呢, 让我们来做一个性能测试吧.项目地址:...

  • 如何编写高性能的 RPC 框架

    在 RPC Benchmark Round 1 中,Turbo 性能炸裂表现强悍,并且在 listUser 这一项...

  • SPEC SFS 2014 EDA Workload简单说明

    默认Benchmark 负载启动后会启动5个进程,2个后端,3个前端 生成目录如下 根据Benchmark文件配,...

  • 使用JMH进行性能测试

    一、背景 在benchmark的世界里头,分为广义的benchmark和狭义的benchmark(即microbe...

  • 数值

    数值 // absolute 绝对值Math.abs(5);Math.abs(-5); // 5 // round...

网友评论

    本文标题:RPC Benchmark Round 5

    本文链接:https://www.haomeiwen.com/subject/srbceqtx.html