因redis线程池挂起导致tomcat无响应

时间:2015-05-13 16:15:57   收藏:0   阅读:986

    上周线上服务器突然出错,tomcat服务莫名其妙的无响应,查看内存和cpu,一切正常,查看nginx日志,发现一直返回499的错误码,看来是程序里面某一处出错,导致tomcat挂起。没啥好办法,线程,堆dump出来之后,重启tomcat服务,应用恢复正常。

    分析了dump出来的堆之后,发现有5百多的redis的连接挂起在那里,查看了redis连接池的配置,发现一个pool最多500个,再仔细查看代码,发现代码逻辑有问题,当应用传入一个key,从redis里面获取一个值,如果该key不存在,代码里的处理是直接返回为空,而没有把连接释放掉,这样这个连接就一直占着空间,直到连接池满了为止。

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!