读取MC服务器没有响应引起线程挂起堵塞

【现象】:某应用http://XXX.XXX.XX.XX:9091/util/threads.jsp会有很100多条线程挂起堵塞,时间越久挂起的线程就越多,并且每个挂起的线程都有以下报错:

wKiom1MpoUXhtjd8AAH4QVaA5i8678.jpg

【原因分析】:MC客户端2.5以后的版本引用了java nio ,而java nio 不支持soTimeout(该方法是用来设置读取堵塞超时) 。也就是说如果有线程读取MC数据,而MC服务器没有响应的话这些线程就会堵塞挂起。

【解决方案】:

把MC客户端升级到2.6.5以上版本,这个版本已经修复了这个bug。更详细内容请参考:

https://github.com/gwhalin/Memcached-Java-Client/commit/cd7440e16f76009fa407c99219f81a2f1d7aff6c。


你可能感兴趣的:(java,nio,memcache)