RPC Benchmark Round 5

测试说明

  • 仅限于 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 项目代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...
    鲁小憨阅读 5,869评论 1 3
  • 测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...
    鲁小憨阅读 5,812评论 1 3
  • 在 RPC Benchmark Round 1 中 turbo 的成绩一骑绝尘,实力碾压众 rpc 框架。对此,很...
    鲁小憨阅读 12,393评论 1 5
  • 测试说明 仅限于 Java 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s ...
    鲁小憨阅读 8,221评论 1 1
  • 几乎所有的 RPC 框架都宣称自己是“高性能”的, 那么实际结果到底如何呢, 让我们来做一个性能测试吧.项目地址:...
    鲁小憨阅读 10,693评论 4 6

友情链接更多精彩内容