昨日和公司同事分享Netty入门的时候,讨论了如下两个问题:
1. Select的最大轮询数限制是1024
2. 当超过1024以后还能注册吗? 或者如何突破1024的限制
我昨天又查阅了一番文档,select最大轮询数不一定是1024,而是FD_SET这个参数,如FD_SET设置为128,则最大轮询数为128。一般为FD_SET的值设置为1024,为什么不设更大的值,应该是处于性能的考虑,轮询数越多,轮询一次的时间也就越长。
如何突破FD_SET的限制?
有两种方式可以突破FD_SET的限制
1.网上介绍的。修改/sys/types.h头文件中FD_SET中的值并重新编译内核。这并不是一个好方法,假设我们注册了10240个连接,那就意味了我们的一次轮询时间要增加好多。
2.还有更好的办法?现在已经是多核时代了,分而治之+负载均衡将连接注册在多个select上,并发select不仅能突破限制而且提高了性能。
有点map-reduce的思想。事实上主流的开源软件都是这样解决的,象tomcat,netty他会有一个acceptor线程和多个poller线程。
3.
这时还有一个问题当一个poller上的最大轮询数超过1024了还能注册吗?答案是肯定的。JDK的WindowsSelectorImpl是同样采用分而治之的多线程轮询策略,当少于1024时只开一个线程轮询,当超过1024时,会再开一个线程轮询超过的这部分。当然当轮询数减少时,也会适当的调整线程数.假如注册的连接数为2000时,线程的使用情况如下图
thread 1 thread 2
0 - 1023 1024-2000
分享到:
相关推荐
在工业自动化领域,S7-200SMART PLC 是一种广泛应用的小型PLC,它支持MODBUS通信协议,使得它可以与各种设备进行数据...同时,了解并熟练掌握相关的编程技巧和错误处理方法,对提升系统的可靠性和自动化水平至关重要。
程序的核心在于“轮询”,这是一种监控或收集数据的常见方法,它周期性地检查数据源以获取新信息。在这个程序中,数据轮询可能涉及到读取文件、解析数据、更新UI等多个步骤。 首先,程序会设置一个轮询间隔,这可以...
由于文本限制,无法提供完整程序代码,但以下是一个简化的MODBUS轮询程序框架: ```ladder FOR i = 1 TO nSlave; // nSlave为从站数量 MB_ReadReg(i, 100, 1, 1); // 读取从站i的地址100的寄存器 WAIT 1s; // ...
标题中的“一个轮询的Java...结合标签“java轮询”,我们可以理解这个案例是关于如何在Java程序中实现轮询机制的示例。通过分析这个有趣的降落伞问题,我们可以更好地理解轮询的概念,并将其应用于实际的编程场景中。
在C#编程中,轮询算法是一种常用的策略,它用于在多个选项或资源之间均匀分配注意力或处理。在这个实例中,轮询算法被用来决定在用户访问页面时,一段特定的代码(例如曝光代码)是否按照预设的概率显示。下面我们将...
这种方法允许控制多达8个从站,若需要更多,可使用MW(16个点)或MD(32个点)。通过检查完成位,一旦完成位置1,就执行循环移位。 4. **操作指令**:当轮询到一个设备时,执行相应的MSG指令,完成操作。完成位在...
在本文档中,我们将深入探讨如何在S7-200SMART PLC进行MODBUS通信轮询时,针对写操作进行插队处理的具体方法。 首先,我们要理解MODBUS轮询的基本概念。轮询是通信系统中的一种控制策略,PLC通过依次询问每个设备来...
总的来说,8-1公平轮询仲裁是解决多设备共享总线问题的一种有效方法,它确保了系统的公平性和效率。MBus上的这种实现则需要具体的设计和编程工作,以确保仲裁器的正确运行和满足系统性能需求。对于理解和设计这样的...
在S7-200SMART PLC的MODBUS RTU通信中,轮询是一种常见的数据交换方式,它按照预设的顺序依次对多个设备进行通信。然而,在某些情况下,我们需要实现插队写入或条件写入,即在特定条件下跳过当前的轮询顺序,优先...
《S7-200SMART Modbus RTU轮询程序详解及使用指南》 在工业自动化领域,西门子的S7-200SMART系列PLC因其小巧、灵活、功能强大而广受青睐。本篇文章将深入探讨如何在S7-200SMART PLC上实现Modbus RTU协议的轮询程序...
在工业自动化领域,S7-200SMART ...这一方法不仅维持了常规的读操作轮询,还能在必要时快速响应并优先处理写操作,有效提升了系统效率。在实际应用中,应根据具体场景灵活调整和优化这些参数,以达到最佳的通信效果。
由于提供的文件名为“meeting.txt”,可能包含关于会议管理或调度的相关信息,这也可能与轮询间隔有关,比如定期检查会议状态,提醒用户即将到来的会议等。但是,由于没有具体的文件内容,我们无法进一步深入讨论。 ...
松下plc 轮询 标准 程序 程式,基于松下plc做的485通讯和几台其他设备通信
例如,一个S7-200SMART主站可以轮询多个温控器(从站)的温度读数。主站通过库函数发送读取寄存器的请求,从站返回其温度传感器读数。主站再将这些数据处理后显示在HMI上,或者用于控制其他设备。 总结,S7-200...
### 单片机程序架构中的时间片轮询技术解析 #### 概述 单片机是一种集成微处理器、存储器及多种输入/输出接口于一体的微型计算机系统,在控制系统领域有着广泛的应用。随着技术的发展,单片机的应用场景越来越复杂...
### 关于init.c轮询注册事件的深入解析 #### 一、引言 在现代操作系统的设计与实现过程中,内核初始化以及系统启动流程是至关重要的环节。本文将围绕“init.c轮询注册事件”这一核心概念展开讨论,旨在深入剖析...
在Modbus RTU应用中,RS485提供了可靠的通信链路,因为它允许最大32个设备在同一总线上通信,并且具有良好的抗干扰能力。 **PTP协议软件包** PTP可能是指“精确时间协议”,但在这里可能指的是“过程控制网络”或...
时间片轮询法是一种软件架构设计方法,主要应用于单片机程序设计。它的主要思想是将整个程序分解成多个任务,每个任务都有自己的时间片,通过轮询的方式来执行这些任务。这种方法可以使程序更加灵活和可维护。 在...
总结来说,MODBUSPOLL轮询是利用TIA PORTAL V15.0中的MODBUS轮询FB库进行MODBUS RTU通信的一种高效方法。通过这种集成的库,用户可以快速地实现主站对多个从站的轮询,而无需编写复杂的底层通信代码。这种方法对于...