这两天系统升级后Redis启动移动端运行2小时左右就假死掉了,服务没有任何错误。此时我们需要借助jstack 输出快照帮我们来排除问题。最后发现连接池没有可配置化,都是静态初始化而且初始化连接数量才500左右,并且新增的Jedis调用工具没有关闭连接这是致命的错误资源耗尽就阻塞等待了。
目录
定位问题
输出文件命令:jstack -l pid > D:jstack.log
问题排查和解决
请参考我的JVM优化及问题排查手册:https://download.csdn.net/download/boonya/12049505
Redis 连接池设置初始化太小:
只需要实现连接可调整配置即可,可以参考Redis工具类:Redis连接池及单节点工具与多Redis节点管理工具
其他问题
如下面截图所示并没有明显的有关业务代码堆栈输出,但是Tomcat就是阻塞掉了。
可能的原因有三:
- Tomcat没有使用线程池或设置太小用户量太大不足以支撑。
- 数据库连接使用完未关闭导致连接资源耗尽等待空闲
- redis连接使用完未关闭导致连接资源耗尽等待空闲