七种WebSocket框架的性能比较

Posted huangshulang1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七种WebSocket框架的性能比较相关的知识,希望对你有一定的参考价值。

                                七种WebSocket框架的性能比较

最近我又使用几个框架实现了websocket push服务器的原型,并专门对这七种实现做了测试。 本文记录了测试结果和一些对结果的分析。


这七种框架是:


  • Netty:http://netty.io/

  • Undertow:http://undertow.io/

  • Jetty:http://www.eclipse.org/jetty/

  • Vert.x:http://http//vertx.io

  • Grizzly:https://grizzly.java.net/

  • spray-websocket:https://github.com/wandoulabs/spray-websocket

  • nodejs-websocket/Node.js:https://github.com/sitegui/nodejs-websocket


最近用Golang实现了第八种,Go表现还不错。


  • Go:https://golang.org/


测试环境


使用三台C3.4xlarge AWS服务器做测试。 一台作为服务器,两台作为客户端机器, 每台客户端机器启动10个client,一共20个client


C3.4xlarge的配置如下:





服务器和客户端机器按照上一篇文章做了基本的优化。


以下是测试的配置数据:


  • 20 clients

  • setup rate设为500 * 20 requests/second = 10000 request /second

  • 每个client负责建立50000个websocket 连接

  • 等1,000,000个websocket建好好,发送一个消息(时间戳)给所有的客户端,客户端根据时间戳计算latency

  • 如果服务器setup rate建立很慢,主动停止测试

  • 监控三个阶段的性能指标: setup时, setup完成后应用发呆(idle)时,发送消息时


测试结果


Netty


Setup时


  • cpu idle: 90%

  • minor gc: Few

  • full gc: No


Setup完成, 应用Idle时


  • cpu idle: 100%

  • memory usage: 1.68G

  • server free memory: 16.3G


发送消息时


  • cpu idle: 75%

  • minor gc: few

  • full gc: No

  • Message latency (one client)


Vert.x


Setup时


  • cpu idle: 95%

  • minor gc: Few

  • full gc: No


Setup完成, 应用Idle时


  • cpu idle: 100%

  • memory usage: 6.37G

  • server free memory: 16.3G


发送消息时


  • cpu idle: 47% ~ 76%

  • minor gc: few

  • full gc: few

  • Message latency (one client)



Undertow


Setup时


  • cpu idle: 90%

  • minor gc: Few

  • full gc: No


Setup完成, 应用Idle时


  • cpu idle: 100%

  • memory usage: 4.02G

  • server free memory: 14.2G


发送消息时


  • cpu idle: 65%

  • minor gc: few

  • full gc: No

  • Message latency




Jetty


Setup时


  • cpu idle: 2%

  • minor gc: Many

  • full gc: No

  • memory usage: 5G

  • server free memory: 17.2G


当建立360,000左右的websocket时, setup非常的慢, gc频繁,无法继续正常建立websocket, 主动终止测试。


Grizzly


Setup时


  • cpu idle: 20%

  • minor gc: Some

  • full gc: Some

  • memory usage: 11.5G

  • server free memory: 12.3G


当建立500,000左右的websocket时, setup非常的慢, gc频繁,无法继续正常建立

websocket, 主动终止测试。


Spray


Setup时


  • cpu idle: 80%

  • minor gc: Many

  • full gc: No


当建立500,000左右的websocket时, setup非常的慢, gc频繁,无法继续正常建立websocket, 主动终止测试。


干货|四大深度学习框架+四类GPU+七种神经网络:交叉性能评测

websocket 的严重性能问题 - 每条消息都会触发 Angular 更改检测

通过GatewayWorker/Workerman搭建Websocket微服务

Android 实现Gif播放的七种方法

websocket面试题

知识分享:程序员必备的七种常见排序算法和搜索算法