服务器的端口指的是用一个程序向服务器发起连接时的请求端口。服务器的端口通常可以分为以下三类:
1、公认端口
这种类型的端口通常称为“常用端口”。 这些端口的端口号范围从0到1024,并且与某些特定服务紧密绑定。 通常这些端口的通信清楚地指示了某种服务的协议,这种端口不再能重新定义其作用。
2、注册端口
端口号是1024到49151,松散地绑定到某些服务。 这也意味着有许多服务绑定到这些端口,这些服务也用于许多其他目的。
3、动态和/或私有端口
端口号从49152到65535。理论上,不应将公共服务分配给这些端口。 实际上,某些特殊程序,尤其是某些特洛伊木马,喜欢使用这些端口,因为这些端口通常不会被发现并且很容易被隐藏。
扩展资料:
对于公认端口,例如,端口80实际上始终用于>
大多数注册端口没有明确定义的服务对象。 不同的程序可以根据实际需要定义相关程序。 例如,描述的远程控制软件和特洛伊木马程序将定义这些端口。 请记住,这些公共程序端口对于保护和杀死特洛伊木马程序非常必要。
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连接,就得占用一个文件描述符。
内核参数:fsfile-max
这是和系统资源相关的,也不会是瓶颈
3 端口号数量
内核参数为:netipv4ip_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服务器,这是要占用一个端口的。
博主更多好文请移步: >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)