我们正在使用netty 3.6.5,并且在我们的渠道管道上使用了与OMATPE结合的ExecutionHandler。我们当前的要求是按照接收顺序处理的事件扩展到尽可能多的线程。应用程序或每个通道内存还不是约束,我们通过在OMATPE中将它们设置为0来禁用。
在使用netty代码后,我们发现OMATPE在启动时使用固定数量的线程,尽管服务器接收的连接数存在差异,但数量仍然相同。我们发现OMATPE存在以下问题: 1. allowCoreThreadTimeOut - 此功能用于在请求数量较少时减少核心线程数。在处理请求时,我们注意到很多线程被创建和销毁。但是,在任何快照期间,线程总数始终保留在核心池计数中。这不是我们的主要问题。我们调用setAllowCoreThreadTimeout(false)来禁用核心线程超时,我们试图以低线程数开始。但是,即使由于下一个问题而调用了setMaximumPoolSize,线程数也永远不会超过低线程数。 2.无界LinkedBlockingQueue:OMATPE使用LinkedBlockingQueue,无限容量,因此当服务器请求数量增加时,不会添加新线程。这导致排队请求的延迟,我们希望避免排队,除非我们缺少处理资源。
我们想知道您是否有任何其他替代建议或解决方案,以满足我们对订购渠道事件和基于负载的可扩展线程的要求。另外,如果您需要有关设置的任何其他详细信息,请与我们联系。