netty程序出现:Too Many open files问题
场景: 本地从kafka获取数据,模拟设备,通过808协议给第三方平台发送数据,一个设备一个连接。 问题: 使用netty做性能测试时,并发过大造成Too Many open files问题 每个设备对象,内部就一个netty对象请求,结果1000多个设备,使用服务器句柄达到了17w+,
场景: 本地从kafka获取数据,模拟设备,通过808协议给第三方平台发送数据,一个设备一个连接。 问题: 使用netty做性能测试时,并发过大造成Too Many open files问题 每个设备对象,内部就一个netty对象请求,结果1000多个设备,使用服务器句柄达到了17w+,
对于IO来说,除了传统的block IO,使用最多的就是NIO了,通常我们在netty程序中最常用到的就是NIO,比如NioEventLoopGroup,NioServerSocketChannel等。
下面仅讲解Linux的多路复用。
Linux的IO将所有外部设备都看作文件来操作,与外部设备的操作都可以看做文件操作,其读写都使用内核提供的系统调用,内核会返回一个文件描述符(fd, file descriptor),例如socket读写使用socketfd。描述符是一个索引,指向内核中一个结构体,应用程序对文件的读写通过描述符完成。