java Netty NIO 如何突破 65536 个端口的限制?如何做到 10万~50万 长连接? 5
现在看了很多帖子都在说java的nettynio实现长连接server可以做到在一个jvm上保持10万~50万的长连接。小弟java新手,对tcp编程了解一丢丢,我的知识...
现在看了很多帖子都在说 java 的 netty nio 实现长连接 server 可以做到在 一个 jvm 上保持 10万 ~ 50万 的长连接。
小弟java新手,对 tcp 编程了解一丢丢,我的知识范围告诉我,一个进程在 linux 上能打开的文件句柄数是有限的,因为内核用 16位的 short 来表示文件句柄数,那么最大值是不是 65536 呢?
而accept一个socket连接,也是要在系统本地创建一个文件的,就占用了这个 socket server 进程的一个文件句柄,这样算下来,一个进程是不是理论上最多就能保持 65536个长连接呢(1024 以下一般保留)?
一个 jvm 上启动一个java的socket server 应该算是一个系统进程吧?那么这个进程是怎么维持 65536 以上的长连接的呢?
我这样理解对么?
求高人指点,我错在哪里了呢?
已经被这个问题困惑了1年了,谁能救救我? 展开
小弟java新手,对 tcp 编程了解一丢丢,我的知识范围告诉我,一个进程在 linux 上能打开的文件句柄数是有限的,因为内核用 16位的 short 来表示文件句柄数,那么最大值是不是 65536 呢?
而accept一个socket连接,也是要在系统本地创建一个文件的,就占用了这个 socket server 进程的一个文件句柄,这样算下来,一个进程是不是理论上最多就能保持 65536个长连接呢(1024 以下一般保留)?
一个 jvm 上启动一个java的socket server 应该算是一个系统进程吧?那么这个进程是怎么维持 65536 以上的长连接的呢?
我这样理解对么?
求高人指点,我错在哪里了呢?
已经被这个问题困惑了1年了,谁能救救我? 展开
6个回答
展开全部
百年不遇的奇葩问题,连接数,跟端口有啥嘛关系,一个程序可以用多个端口,但绝对不会这么用,简直是浪费到极点,服务器端是使用了高可用方案才能做到10万~50万这么高的连接数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
65536 指的是端口数目 一台电脑只有 最多65536个端口。不能可能使用超过 65536 个端口的 。但是每个端口可比不是只能有一个连接的。
一个 jvm 上保持 10万 ~ 50万 的长连接 指的是连接数,这么多连接使用的一个或者几十个端口,而不是所有的端口。
web服务 用80端口 每秒几万人访问的时候,并不是没人一个端口而是大家公用一个80端口的。
一个 jvm 上保持 10万 ~ 50万 的长连接 指的是连接数,这么多连接使用的一个或者几十个端口,而不是所有的端口。
web服务 用80端口 每秒几万人访问的时候,并不是没人一个端口而是大家公用一个80端口的。
追问
兄弟,按您的解释,那就不是长连接服务了,我并不是在问 web 。感谢您的回答,不过有些跑题。而且一个电脑只有6万多个端口是谬论,我的提干里面已经有粗浅的阐述了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂不要装懂 谁告诉你的 服务器只能监听一个端口 我觉得有些时候没有真正能明白 不要乱发言 这样会浪费别人的时间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询