首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
pathbox
V2EX  ›  NGINX

使用 Nginx 作为 websocket 的负载均衡代理,能支持多少 websocket 并发连接

  •  
  •   pathbox · 2017-12-25 14:31:25 +08:00 · 6725 次点击
    这是一个创建于 756 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直有一个疑惑的地方,在此发帖请教各位。使用 Nginx 作为 websocket 的负载均衡代理,能支持多少 websocket 并发连接? 由于 Linux 服务器有 65535 的文件描述符的限制,nginx 做代理转发的时候,理论最多使用 65535 个文件描述符,这样,单台 nginx 是否就是理论最多支持 65535 个 websocket 连接呢?

    9 回复  |  直到 2017-12-26 10:26:33 +08:00
    fcten
        1
    fcten   2017-12-25 14:36:19 +08:00
    Linux 的文件描述符限制是可以修改的,理论上百万连接都没有问题,但是实际业务中一般不会这么做
    crystom
        2
    crystom   2017-12-25 14:38:09 +08:00
    65536 并发梗
    pubby
        3
    pubby   2017-12-25 14:47:47 +08:00 via Android
    文件描述符 65535 可以改,受限 65535 是因为转发到后端的时候 nginx 把本地端口数消耗光了。通过多个 ip 或者后端多开几个监听端口绕开吧
    AntonChen
        4
    AntonChen   2017-12-25 14:58:55 +08:00 via Android
    理论上配置足够单机 200 万连接没问题。文件描述符可以调整加大,而 TCP/IP 协议一个连接需要一个端口通信,所以需要多 IP 来解决 65535 的限制。
    AntonChen
        5
    AntonChen   2017-12-25 15:02:43 +08:00   ♥ 1
    系统层面的限制可以参考 http://www.linuxde.net/2011/10/1230.html 来了解,TCP/IP 协议的限制只能通过增加 IP 来加大连接数。

    另外连接建立是需要内存资源的 http://www.cnblogs.com/dongfuye/p/4756586.html 可以看见一些相关的东西。
    pathbox
        6
    pathbox   2017-12-25 20:41:27 +08:00
    @AntonChen 明白了。可以理解为 瓶颈是 IP 端口数为 65535,TCP 端口是占 16 位,2^16-1 ( 65535 个),同一时刻,ip 端口数用尽了,即使内存还很充足,文件描述符还可以建很多也没办法了。 豁然开朗,要的就是这个~ 多谢
    SoloCompany
        7
    SoloCompany   2017-12-25 21:36:17 +08:00
    理论上,假如后端支持 HTTP2 的话,multiplex 可以解决 tcp 端口数和 fd 数量限制的问题,而实际上是否有这样的架构软件支持有待考证
    pathbox
        8
    pathbox   2017-12-26 09:13:42 +08:00 via iPhone
    @SoloCompany 是的
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2489 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 14:17 · PVG 22:17 · LAX 06:17 · JFK 09:17
    ♥ Do have faith in what you're doing.