java Netty NIO 如何突破 65536 个端口的限制?如何做到10万~50万的长连接?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Netty NIO 如何突破 65536 个端口的限制?如何做到10万~50万的长连接?相关的知识,希望对你有一定的参考价值。

参考技术A

通常情况下是不可以突破的,端口有限制.单独对外提供请求的服务不用考虑端口数量问题,监听某一个端口即可.但是向提供代理服务器,就不得不考虑端口数量受限问题了.当前的1M并发连接测试,也需要在客户端突破6万可用端口的限制.端口为16进制,那么2的16次方值为65536,在linux系统里面,1024以下端口都是超级管理员用户(如root)才可以使用,普通用户只能使用大于1024的端口值.

服务器是只监听一个端口,所有的客户端连接,都是连接到服务器的同一个端口上的。也就是说服务器只是用了一个端口。就比如Http服务器。默认只用了80端口。

nio 在linux上使用的是epoll ,epoll支持在一个进程中打开的FD是操作系统最大文件句柄数,而不是你所说的16位short表示的文件句柄。 而 select模型 单进程打开的FD是受限的 select模型默认FD是1024 。操作系统最大文件句柄数跟内存有关,1GB内存的机器上,大概是10万个句柄左右。

以上是关于java Netty NIO 如何突破 65536 个端口的限制?如何做到10万~50万的长连接?的主要内容,如果未能解决你的问题,请参考以下文章

对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?

Java -- 每日一问:对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?

从Netty到EPollSelectorImpl学习Java NIO

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

源码分析netty服务器创建过程vs java nio服务器创建

netty系列之:不用怀疑,netty中的ByteBuf就是比JAVA中的好用