测试说明
- 仅限于 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), 获取用户列表
运行结果
生成时间: 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 |
更新说明
- 硬件升级到8核
- jdk 升级为 AdoptOpenJDK-11.0.2
- 各个框架均升级到最新版本
免责声明
快速链接
往期评测:
RPC Benchmark Round 4
RPC Benchmark Round 3
RPC Benchmark Round 2
RPC Benchmark Round 1
测试说明:
rpc-benchmark 测试说明
rpc-benchmark 项目代码
网友评论