低版本Redisson的OOM问题

1.现象 调用某个服务的登录回调服务,有接入进来查询日志,查询关联id下一级服务没有日志

2.麻烦运维提供相关日志以及调用相关接口,telnet发现有时候调用成功有时候调用失败,并且在错误日志中发现OOM错误日志

3.使用jstack命令打印出进程信息

jstack [pid] > 文件名.log

4.使用jmap命令打印出dump信息

jmap -dump:file=文件名.dump [pid]

5.日志打印出来后通过重启先让问题解决

6.查看两个文件是否是线程过多导致,

https://fastthread.io/

上面网站可以辅助分析jstack打印文件查看RUNNABLE状态的线程时候发现redisson前缀的日志很多

低版本Redisson的OOM问题_第1张图片
低版本Redisson的OOM问题_第2张图片

MAT解析

​ 安装MAT:

https://www.eclipse.org/mat/previousReleases.php

低版本Redisson的OOM问题_第3张图片

通过Problem Suspect1

​ NioEndPoint tomcat线程池太小导致线程堆积

通过Total 可以看出堆空间很小和启动配置不相符 -Xms1024m -Xmx1024m
java -javaagent:/data/jmx_prometheus_javaagent-0.16.1.jar=8488:/data/prometheus-jmx-config.yaml -jar /data/application/face-id.jar -Djava.security.egd=file:/dev/./urandom -Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8 -Xms1024m -Xmx1024m --spring.profiles.active=k8s-prod -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:ActiveProcessorCount=2
/bin/bash entrypoint.sh -Xms1024m -Xmx1024m --spring.profiles.active=k8s-prod -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:ActiveProcessorCount=2

java -jar jar文件,当-Xms 在jar文件后面的时候不起效

通过Problem Suspect2
低版本Redisson的OOM问题_第4张图片
低版本Redisson的OOM问题_第5张图片

查询资料Redisson OOM 发现低版本(小于3.12.5版本) 可能会导致OOM

https://www.jianshu.com/p/a89dbefb8f74

低版本Redisson的OOM问题_第6张图片

你可能感兴趣的:(Redisson,java,开发语言)