websocket 最大链接数量调试笔记

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

测试请求代码




    
    
    
    WEBSOCKET测试页面


    

调试发现发起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 最大链接数量调试笔记)