标签:
上周线上服务器突然出错,tomcat服务莫名其妙的无响应,查看内存和cpu,一切正常,查看nginx日志,发现一直返回499的错误码,看来是程序里面某一处出错,导致tomcat挂起。没啥好办法,线程,堆dump出来之后,重启tomcat服务,应用恢复正常。
分析了dump出来的堆之后,发现有5百多的redis的连接挂起在那里,查看了redis连接池的配置,发现一个pool最多500个,再仔细查看代码,发现代码逻辑有问题,当应用传入一个key,从redis里面获取一个值,如果该key不存在,代码里的处理是直接返回为空,而没有把连接释放掉,这样这个连接就一直占着空间,直到连接池满了为止。
标签:
原文地址:http://www.cnblogs.com/hzwj/p/4500588.html