Netty权威指南:I-O-多路复用技术

本文探讨了在服务器处理多协议套接字时,I/O多路复用技术的重要性。文章指出,相较于`select`,`epoll`在Linux系统中具有显著优势,如不限制文件描述符数量、非线性性能下降以及使用mmap加速消息传递。通过对`select`和`epoll`的性能对比,展示了`epoll`在处理大量并发连接时的高效性,尤其是在模拟广域网环境中的优越表现。
摘要由CSDN通过智能技术生成
  • 服务器需要同时处理多种网络协议的套接字。

目前支持I/O多路复用的系统调用有selectpselectpollepoll,在Linux网络编程过程中,很长一段时间都使用select做轮询和网络事件通知,然而select的一些固有缺陷导致了它的应用受到了很大的限制,最终Linux不得不在新的内核版本中寻找select的替代方案,最终选择了epollepollselect 的原理比较类似,为了克服select的缺点,epoll 作了很多重大改进,现总结如下。

1.支持一一个进程打开的socket描述符( FD)不受限制(仅受限于操作系统的最大文件句柄数)。

select最大的缺陷就是单个进程所打开的FD是有一定限制的,它由FD_ SETSIZE设置,默认值是1024。 对于那些需要支持上万个TCP连接的大型服务器来说显然太少了。可以选择修改这个宏然后重新编译内核,不过这会带来网络效率的下降。我们也可以通过选择多进程的方案(传统的Apache方案)解决这个问题,不过虽然在Linux上创建进程的代价比较小,但仍旧是不可忽视的。另外,进程间的数据交换非常麻烦,对于Java 来说,由于没有共享内存,需要通过Socket通信或者其他方式进行数据同步,这带来了额外的性能损耗,增加了程序复杂度,所以也不是一种完美的解决方案。值得庆幸的是,epoll 并没有这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值