首页 电脑 电脑学堂 查看内容

七种WebSocket框架的性能比较

2016-8-1 17:03 1705 0

摘要: 原文出处:鸟窝(@colobu )前一篇文章使用四种框架分别实现百万websocket常连接的服务器介绍了四种websocket框架的测试方法和基本数据。 最近我又使用几个框架实现了websocket push服务器的原型,并专门对这七种实 ...

前一篇文章使用四种框架分别实现百万websocket常连接的服务器介绍了四种websocket框架的测试方法和基本数据。 最近我又使用几个框架实现了websocket push服务器的原型,并专门对这七种实现做了测试。 本文记录了测试结果和一些对结果的分析。
这七种框架是:

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

测试环境

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

型号vCPU内存 (GiB)SSD 存储 (GB)
c3.large23.752 x 16
c3.xlarge47.52 x 40
c3.2xlarge8152 x 80
c3.4xlarge16302 x 160
c3.8xlarge32602 x 320

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

以下是测试的配置数据:

  • 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

发送消息时