回答一下问题:
如果不加这个拦截器发现后天的NioProcessor会随着时间的增加阻塞总数也不断变大,不知道最后会不会回崩掉?
不加拦截器的话,接收客户端数据与业务处理均在IoProcessor引用的线程池里处理,可能会产生阻塞,客户端延迟严重,最终会导致工作队列不断累积,内存不断增长
解决办法:
通用的做法是修改dfcb.addLast("executor", new ExecutorFilter(Executors.newCachedThreadPool()));
将cachedThreadPool修改为有上限的线程池,防止线程无限增长。
1、首先将Executors.newCachedThreadPool()替换为自定义的ThreadPoolExecutor
设置合理的核心线程数、线程总数、采用定长阻塞容器、设置失败策略
2、解决接收和处理能力不匹配问题,主要是你接收速度快,处理速度慢,这个是和你业务有关系的,所以还要从业务上优化下