nettysocket服务器(nettywebsocket服务器搭建)「netty服务端」

  (点击上方公众号,可快速关注)

  泉源:鸟窝

  链接:colobu.com/2015/07/14/performance-comparison-of-7-websocket-frameworks/

  前一篇文章利用四种框架分别实现百万websocket常毗连的服务器先容了四种websocket框架的测试方法和根本数据。近来我又利用几个框架实现了websocketpush服务器的原型,并专门对这七种实现做了测试。本文记录了测试结果和一些对结果的分析。

  这七种框架是:

  Netty

  Undertow

  Jetty

  Vert.x

  Grizzly

  spray-websocket

  nodejs-websocket/Node.js

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

  Go

  测试环境

  利用三台C3.4xlargeAWS服务器做测试。一台作为服务器,两台作为客户端呆板,每台客户端呆板启动10个client,一共20个client

  C3.4xlarge的设置如下:

  型号vCPU内存(GiB)SSD存储(GB)

  c3.large23.752x16

  c3.xlarge47.52x40

  c3.2xlarge8152x80

  c3.4xlarge16302x160

  c3.8xlarge32602x320

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

  以下是测试的设置数据:

  20clients

  setuprate设为500*20requests/second=10000request/second

  每个client负责创建50000个websocket毗连

  等1,000,000个websocket建好好,发送一个消息(时间戳)给全部的客户端,客户端根据时间戳盘算latency

  假如服务器setuprate创建很慢,主动克制测试

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

  测试结果

  Netty

  Setup时

  cpuidle:90%

  minorgc:Few

  fullgc:No

  Setup完成,应用Idle时

  cpuidle:100%

  memoryusage:1.68G

  serverfreememory:16.3G

  发送消息时

  cpuidle:75%

  minorgc:few

  fullgc:No

  Messagelatency(oneclient)

  count=50000

  min=0

  max=18301

  mean=2446.09

  stddev=3082.11

  median=1214.00

  75%3625.00

  95%8855.00

  98%12069.00

  99%13274.00

  99.9%18301.00

  Vert.x

  Setup时

  cpuidle:95%

  minorgc:Few

  fullgc:No

  Setup完成,应用Idle时

  cpuidle:100%

  memoryusage:6.37G

  serverfreememory:16.3G

  发送消息时

  cpuidle:47%~76%

  minorgc:few

  fullgc:few

  Messagelatency(oneclient)

  count=50000

  min=49

  max=18949

  mean=10427.00

  stddev=5182.72

  median=10856.00

  75%14934.00

  95%17949.00

  98%18458.00

  99%18658.00

  99.9%18949.00

  Undertow

  Setup时

  cpuidle:90%

  minorgc:Few

  fullgc:No

  Setup完成,应用Idle时

  cpuidle:100%

  memoryusage:4.02G

  serverfreememory:14.2G

  发送消息时

  cpuidle:65%

  minorgc:few

nettysocket服务器(netty websocket服务器搭建) nettysocket服务器(netty websocket服务器搭建)「netty 服务端」 行业资讯

  fullgc:No

  Messagelatency

  count=50000

  min=1

  max=11948

  mean=1366.86

  stddev=2007.77

  median=412.00

  75%2021.00

  95%5838.00

  98%7222.00

  99%8051.00

  99.9%11948.00

  Jetty

  Setup时

  cpuidle:2%

  minorgc:Many

  fullgc:No

  memoryusage:5G

  serverfreememory:17.2G

  当创建360,000左右的websocket时,setup非常的慢,gc频仍,无法继承正常创建websocket,主动停止测试。

  Grizzly

  Setup时

  cpuidle:20%

  minorgc:Some

  fullgc:Some

  memoryusage:11.5G

  serverfreememory:12.3G

  当创建500,000左右的websocket时,setup非常的慢,gc频仍,无法继承正常创建websocket,主动停止测试。

  Spray

  Setup时

  cpuidle:80%

  minorgc:Many

  fullgc:No

  当创建500,000左右的websocket时,setup非常的慢,gc频仍,无法继承正常创建websocket,主动停止测试。

  Node.js

  Setup时

  cpuidle:94%

  Setup完成,应用Idle时

  cpuidle:100%

  memoryusage:5.0G

  serverfreememory:16.3G

  发送消息时

  cpuidle:94%

  Messagelatency(oneclient)

  Messagelatency

  count=50000

  min=0

  max=18

  mean=1.27

  stddev=3.08

  median=1.00

  75%1.00

  95%1.00

nettysocket服务器(netty websocket服务器搭建) nettysocket服务器(netty websocket服务器搭建)「netty 服务端」 行业资讯

  98%1.00

  99%1.00

  99.9%15.00

  Go

  Setup时

  cpuidle:94%

  Setup完成,应用Idle时

  cpuidle:100%

  memoryusage:15G

  serverfreememory:6G

  发送消息时

  cpuidle:94%

  Messagelatency(oneclient)

  Messagelatency

  count=50000

  min=0

  max=35

  mean=1.89

  stddev=1.83

  median=1.00

  75%1.00

  95%2.00

  98%2.00

  99%4.00

  99.9%34.00

  测试结果分析

  Netty,Go,Node.js,Undertow,Vert.x都能正常创建百万毗连。Jetty,Grizzly和Spray未能完成百万毗连

  Netty表现最好。内存占用非常的少,CPU利用率也不高。尤其内存占用,远远小于别的框架

  Jetty,Grizzly和Spray会产生大量的中心对象,导致垃圾采取频仍。Jetty表现最差

  Node.js表现非常好。尤其是测试中利用单实例单线程,创建速率非常快,消息的latency也很好。内存占用也不错

  Undertow表现也不错,内存占用比Netty高一些,别的差不多

  这里还未测到Spray另一个不好的地方。在大量毗连的环境小,纵然没有消息发送,Spray也会占用40%CPU时间

  -------------保举------------

  范品社推出的极客T恤,含程序员、影戏、美剧和物理题材,面料舒服、100%纯棉,有黑、白、灰、藏青色,单件¥59.9、两件减¥12、四件减¥28、六件减¥42,详见网店商品页先容。

  

  (上面为部分T恤格局)

  网店地点:https://fanpinshe.taobao.com

  淘口令:复制以下赤色内容,然后打开手淘即可购买

  范品社,利用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)

客户评论

我要评论