测试说明
- 仅限于 Java
- 客户端使用 JMH 进行压测, 32 线程, 3 轮预热 3 轮测试, 每轮 10s
- 每次运行前都会执行 killall java, 但没有在每轮测试时重启操作系统
- 所有类库版本在发布时都是最新的, 除非存在 bug
- 所有框架都尽量参考该项目自带的 Benchmark 实现
- 将会一直持续, 不定期发布测试结果
测试用例
- boolean existUser(String email), 判断某个 email 是否存在
- boolean createUser(User user), 添加一个 User
- User getUser(long id), 根据 id 获取一个用户
- Page<User> listUser(int pageNo), 获取用户列表
运行结果
- 生成时间: 2018-03-25 13:25:48
- 硬件环境: 阿里云 ecs.c5.xlarge Intel Xeon Platinum 8163, 4CPU 8GB RAM 两台
- 软件环境: Ubuntu x64 16.04.5, Java HotSpot(TM) 64-Bit Server VM 10+46
- 启动参数: java -server -Xmx1g -Xms1g -XX:MaxDirectMemorySize=1g -XX:+UseG1GC
existUser
turbo-rpc | 122.675 | 0.262 | 0.387 | 0.581 | 2.001 |
jupiter | 120.029 | 0.267 | 0.364 | 0.59 | 4.301 |
thrift | 96.589 | 0.332 | 0.633 | 1.174 | 1.778 |
netty | 91.215 | 0.372 | 0.403 | 0.471 | 0.767 |
turbo-rest | 83.689 | 0.384 | 0.841 | 1.501 | 3.971 |
undertow | 83.66 | 0.369 | 0.802 | 1.446 | 3.415 |
undertow-async | 73.534 | 0.433 | 0.898 | 1.708 | 5.604 |
dubbo-kryo | 61.077 | 0.528 | 0.673 | 0.915 | 3.891 |
dubbo | 60.481 | 0.533 | 0.677 | 0.868 | 3.199 |
motan | 54.075 | 0.583 | 0.907 | 1.858 | 12.206 |
rapidoid | 49.32 | 0.65 | 1.97 | 3.924 | 10.764 |
hprose | 39.489 | 0.845 | 0.506 | 4.239 | 40.239 |
springwebflux | 29.885 | 1.076 | 1.653 | 2.183 | 8.139 |
grpc | 26.896 | 1.129 | 1.425 | 1.679 | 4.08 |
springboot | 23.121 | 1.409 | 1.962 | 11.534 | 25.952 |
createUser
jupiter | 108.155 | 0.298 | 0.417 | 0.69 | 4.415 |
turbo-rpc | 96.085 | 0.336 | 0.454 | 0.664 | 2.941 |
thrift | 91.383 | 0.354 | 0.667 | 1.231 | 1.884 |
undertow | 82.799 | 0.392 | 0.815 | 1.45 | 3.856 |
turbo-rest | 77.048 | 0.395 | 0.75 | 1.376 | 4.801 |
undertow-async | 70.419 | 0.464 | 0.827 | 1.475 | 5.983 |
netty | 70.157 | 0.439 | 0.514 | 0.603 | 0.932 |
motan | 50.684 | 0.645 | 1.006 | 2.097 | 12.452 |
dubbo-kryo | 45.009 | 0.739 | 0.921 | 1.145 | 5.12 |
hprose | 34.056 | 0.998 | 0.564 | 38.142 | 40.436 |
grpc | 28.261 | 1.088 | 1.466 | 1.718 | 3.498 |
springwebflux | 26.934 | 1.156 | 1.776 | 2.347 | 8.831 |
dubbo | 26.672 | 1.207 | 1.544 | 1.925 | 5.054 |
springboot | 23.156 | 1.417 | 2.003 | 11.649 | 27.537 |
rapidoid | 19.033 | 1.689 | 1.116 | 30.245 | 50.463 |
getUser
turbo-rpc | 106.83 | 0.304 | 0.452 | 0.655 | 3.224 |
jupiter | 104.561 | 0.304 | 0.434 | 0.74 | 4.481 |
thrift | 91.213 | 0.351 | 0.669 | 1.235 | 1.896 |
undertow | 81.5 | 0.404 | 0.863 | 1.612 | 4.252 |
turbo-rest | 71.833 | 0.448 | 0.759 | 1.415 | 5.825 |
undertow-async | 69.805 | 0.451 | 0.804 | 1.452 | 4.768 |
netty | 68.668 | 0.508 | 0.517 | 0.543 | 0.611 |
motan | 50.618 | 0.626 | 0.986 | 1.993 | 12.222 |
dubbo-kryo | 48.287 | 0.665 | 0.817 | 1.031 | 5.087 |
rapidoid | 43.454 | 0.74 | 2.437 | 5.054 | 13.721 |
hprose | 43.037 | 0.766 | 0.778 | 1.391 | 40.042 |
grpc | 28.437 | 1.037 | 1.374 | 1.647 | 3.83 |
dubbo | 24.487 | 1.187 | 1.507 | 2.011 | 7.137 |
springwebflux | 24.419 | 1.313 | 2.085 | 2.568 | 9.11 |
springboot | 21.619 | 1.509 | 2.163 | 11.829 | 28.279 |
listUser
jupiter | 42.076 | 0.754 | 1.343 | 2.58 | 5.767 |
turbo-rpc | 39.544 | 0.862 | 1.894 | 2.396 | 6.226 |
thrift | 30.629 | 1.048 | 2.03 | 4.092 | 10.223 |
undertow | 30.1 | 1.063 | 1.489 | 2.273 | 9.798 |
grpc | 29.788 | 1.038 | 1.331 | 1.804 | 7.528 |
motan | 28.702 | 1.102 | 1.806 | 3.351 | 11.64 |
undertow-async | 28.581 | 1.119 | 1.604 | 2.56 | 10.153 |
netty | 23.24 | 1.494 | 1.53 | 1.612 | 4.549 |
rapidoid | 20.166 | 1.604 | 1.497 | 21.725 | 39.911 |
turbo-rest | 18.627 | 1.74 | 2.134 | 3.637 | 11.554 |
springwebflux | 18.208 | 1.76 | 2.748 | 3.346 | 11.289 |
hprose | 17.308 | 1.85 | 2.023 | 2.666 | 58.524 |
dubbo-kryo | 17.054 | 1.867 | 2.462 | 3.391 | 8.618 |
springboot | 14.813 | 2.175 | 3.338 | 14.516 | 32.309 |
dubbo | 3.833 | 8.338 | 11.289 | 14.942 | 19.847 |
更新说明
- 硬件变化, 阿里云 ecs.c4.xlarge 没有了, 只能使用 ecs.c5.xlarge
- 软件变化, java 9 升级为 java 10
- 测试方法变化, "10 轮预热 3 轮测试 每轮 1s" 修改为 "3 轮预热 3 轮测试 每轮 10s"
- aeron: 性能差会丢消息, 没存在价值, 从 rpc-benchmark 中去掉了
- jupiter: 作者 fengjiachun 亲自修改测试参数, 非常感谢
- hprose: 作者 andot 亲自修改测试参数, 非常感谢
- thrift: 连接数由 4 个增加到 32 个, 连接池修改为分段锁实现
- 其他: 常规版本升级, 都升级到了最新版本 (dubbo 2.6.1 存在 bug,继续使用 2.6.0)
免责声明
快速链接
05-26 04:17