Mina的ProtocolEncoderOutput之坑

  这个问题是以前测试上万个链接的pingpong发现的,调了好久,但当时急着作其余事,就没有详细记录下来,如今回想起来也有点记不清具体哪儿了。服务器

  表现是在测试上万个链接的pingpong时会出现服务器挂起的现象,服务端没法收到任何消息,因为服务器用了OrderedThreadPoolExecutor,debug时发现OrderedThreadPoolExecutor的idleWorkers显示有15个空闲线程,但workers里一个Worker线程都没有,因此NioProcessor提交的任务都没法继续,服务器整个被挂起……多线程

  后排排查发现mina的encoder最后手动调用了out.flush();,加了这行会在收发负载量大时由于mina的OrderedThreadPoolExecutor多线程模型致使内部抛异常、状态异常。。。测试

  在此记下这个坑

线程

相关文章
相关标签/搜索