这七种框架是:
最近用Golang实现了第八种,Go表现还不错。
测试环境
使用三台C3.4xlarge AWS服务器做测试。 一台作为服务器,两台作为客户端机器, 每台客户端机器启动10个client,一共20个client
C3.4xlarge的配置如下:
型号 | vCPU | 内存 (GiB) | SSD 存储 (GB) |
c3.large | 2 | 3.75 | 2 x 16 |
c3.xlarge | 4 | 7.5 | 2 x 40 |
c3.2xlarge | 8 | 15 | 2 x 80 |
c3.4xlarge | 16 | 30 | 2 x 160 |
c3.8xlarge | 32 | 60 | 2 x 320 |
服务器和客户端机器按照上一篇文章做了基本的优化。
以下是测试的配置数据:
测试结果
Netty
Setup时
Setup完成, 应用Idle时
发送消息时
01 |
count = 50000 |
02 |
min = 0 |
03 |
max = 18301 |
04 |
mean = 2446.09 |
05 |
stddev = 3082.11 |
06 |
median = 1214.00 |
07 |
75% 3625.00 |
08 |
95% 8855.00 |
09 |
98% 12069.00 |
10 |
99% 13274.00 |
11 |
99.9% 18301.00 |
Vert.x
Setup时
Setup完成, 应用Idle时
发送消息时
01 |
count = 50000 |
02 |
min = 49 |
03 |
max = 18949 |
04 |
mean = 10427.00 |
05 |
stddev = 5182.72 |
06 |
median = 10856.00 |
07 |
75% 14934.00 |
08 |
95% 17949.00 |
09 |
98% 18458.00 |
10 |
99% 18658.00 |
11 |
99.9% 18949.00 |
Undertow
Setup时
Setup完成, 应用Idle时
发送消息时
01 |
count = 50000 |
02 |
min = 1 |
03 |
max = 11948 |
04 |
mean = 1366.86 |
05 |
stddev = 2007.77 |
06 |
median = 412.00 |
07 |
75% 2021.00 |
08 |
95% 5838.00 |
09 |
98% 7222.00 |
10 |
99% 8051.00 |
11 |
99.9% 11948.00 |
Jetty
Setup时
当建立360,000左右的websocket时, setup非常的慢, gc频繁,无法继续正常建立websocket, 主动终止测试。
Grizzly
Setup时
当建立500,000左右的websocket时, setup非常的慢, gc频繁,无法继续正常建立websocket, 主动终止测试。
Spray
Setup时
当建立500,000左右的websocket时, setup非常的慢, gc频繁,无法继续正常建立websocket, 主动终止测试。
Node.js
Setup时
发送消息时
01 |
count = 50000 |
02 |
min = 0 |
03 |
max = 18 |
04 |
mean = 1.27 |
05 |
stddev = 3.08 |
06 |
median = 1.00 |
07 |
75% 1.00 |
08 |
95% 1.00 |
09 |
98% 1.00 |
10 |
99% 1.00 |
11 |
99.9% 15.00 |
Go
Setup时
发送消息时
01 |
count = 50000 |
02 |
min = 0 |
03 |
max = 35 |
04 |
mean = 1.89 |
05 |
stddev = 1.83 |
06 |
median = 1.00 |
07 |
75% 1.00 |
08 |
95% 2.00 |
09 |
98% 2.00 |
10 |
99% 4.00 |
11 |
99.9% 34.00 |
测试结果分析