websocket并发量,各大浏览器最大socket连接数

前言:各大浏览器最大socket连接数

  • IE 6个
  • chrome 256个
  • Firefox 200个
  • safari 1273个(MAC版本)

问题:以google为例

在开发调试websocket的时候,去浏览器模拟了ws请求,测试服务器请求量,发现只有255个成功,之后所有请求全部失败,经各种考证发现,不是服务器问题,而是浏览器最大并发请求量为256。
websocket并发量,各大浏览器最大socket连接数_第1张图片

原因:

调试发现发起2000个请求后报错,提示并发量太大,于是翻阅nodejs 查看关于所有请求线程并发相关内容,发现http.request() 使用的默认 http.globalAgent 的选项均为各自的默认值

  • keepAlive : 保持 socket 可用即使没有请求,以便它们可被将来的请求使用而无需重新建立一个 TCP
    连接。默认为 false。
  • keepAliveMsecs :当使用了 keepAlive 选项时,该选项指定 TCP Keep-Alive 数据包的
    初始延迟。 当 keepAlive 选项为 false 或 undefined 时,该选项无效。 默认为 1000。 maxSockets
    每个主机允许的最大 socket 数量。 默认为 Infinity。
  • maxFreeSockets 在空闲状态下允许打开的最大 socket 数量。 仅当 keepAlive 为 true
    时才有效。 默认为 256 但是并没有为koa开启keepAlive 所以不会是原始globalAgent
    的问题,使用多浏览器请求,每次200个是可以的,服务端线程池也没有报错,所以判断是浏览器限制每次并发请求不能大于256个线程。

你可能感兴趣的:(浏览器,websocket)