首页 > 系统相关 >Nginx 代理websocket连接上限

Nginx 代理websocket连接上限

时间:2022-12-31 22:00:12浏览次数:48  
标签:websocket nginx 上限 Nginx 内存 服务器 local 连接

一. 结论

  1. nginx最多只能维持(65535*后端服务器IP个数)条websocket的长连接,如果后端websocket服务器IP只有一个,那么就只能最多支持65535条连接。瓶颈就产生在了nginx上。

  2. 建议采用LVS的DR模式来做负载均衡,这样最大长连接数目就只和websocket服务器资源(主要是内存)有关了,单台websocket服务器很轻松可以支撑百万级连接

 

二. 原理

用nginx做websocket的反向代理其中涉及到的资源有:

1. 内存(相关数据结构的存储)、cpu、网络

   内存的占用分两部分,一部分是内核中tcp协议栈结构占用的内存,一部分是nginx中维持双向连接数据结构占用的内存

   按照理想状况,一条tcp连接的数据结构在内存中占用大约4KB左右,nginx的内存占用,没有统计相关的结构体,这里就等于2KB(nginx的内存利用非常高效,有内存池)

   对于现在的服务器来说内存、cpu、网络都不会是瓶颈,因此这里不做讨论。

2. 文件描述符数量

   可能需要调整内核参数,文件描述符的数量其实也是和内存相关的,因为每打开一个tcp连接,就得占用一个文件描述符。

   内核参数:fs.file-max

   这是和系统资源相关的,也不会是瓶颈

3. 端口号数量

   内核参数为:net.ipv4.ip_local_port_range,且最大值为65535

   linux内核是通过{local_ip, local_port, remote_ip, remote_port}这个四元组来标识一条唯一的tcp连接的。

   1)对于websocket服务器自身而言,local_ip, local_port是确定的,在内存、cpu足够的情况下,其可以支撑 (client_ip数量*2^16)条连接。也就是说只要服务器资源足够,一定不会是瓶颈。

   2)对于nginx服务器来说,local_ip, local_port也是确定的,不同的是,它还要作为client去连接websocket服务器,这是要占用一个端口的。

      因此,nginx能支撑的websocket连接数最大为:(代理的websocket服务器IP数量*2^16),如果只有一个websocket服务器IP,那么就只有65536,去掉0端口,就只有65535.

标签:websocket,nginx,上限,Nginx,内存,服务器,local,连接
From: https://blog.51cto.com/u_14879850/5982427

相关文章

  • Docker部署nginx并挂载配置
    1、下载镜像并启动一个容器dockerpullnginx创建容器并运行dockerrun-d--namemynginx-p80:80 2、将nginx配置文件挂载到宿主机在宿主机创建目录: ......
  • nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
    文章目录​​前言​​​​一、对上一篇博文的分析​​​​二、配置文件分析​​​​1.nginx官方网址(很详细)​​​​2、配置文件(全)​​​​3、配置文件(去掉注释)​​​​4、......
  • websocket 多个nginx转发
    第一个nginxserver{listen6794;root/mnt/dist;location/analyze/{proxy_passhttp://ip:port;......
  • Linux一键部署ELK+Filebeat+Nginx+Redis日志平台自动化脚本
    此脚本是Linux一键部署ELK+Filebeat+Nginx+Redis日志平台自动化脚本,有需要朋友可以参考,脚本内容如下:环境准备操作系统:CentOSLinuxrelease7.8.2003软件版本Elasticsearch:e......
  • Linux搭建ELK+Filebeat+Nginx+Redis分布式日志管理平台
    ELK介绍需求背景业务发展越来越庞大,服务器越来越多各种访问日志、应用日志、错误日志量越来越多,导致运维人员无法很好的去管理日志开发人员排查问题,需要到服务器上查日志,不......
  • Nginx WEB服务器入门简介及安装
    Nginx(WEB服务器)简介Nginx (enginex)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(......
  • Zabbix监控Nginx性能状态
    Zabbix监控Nginx性能状态Nginx在生产环境中的应用越来越广泛,所以需要对nginx的性能状态做一些监控,从而发现故障隐患,Ngnx的监控指标可分为:基本活动指标,错误指标,性能指标。需......
  • Nginx动态添加模块
    说明:有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作反向代理......
  • nginx使用stream实现透传
    nginx配置如下:1#Formoreinformationonconfiguration,see2#*OfficialEnglishDocumentation:http://nginx.org/en/docs/3#*OfficialRussianDoc......
  • Docker 安装 Nginx
    Docker安装NginxNginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文......