当前位置: 首页 > news >正文

【复盘】记录一次JVM 异常问题 java.lang.OutOfMemoryError: unable to create new native thread

背景是最新运营提了一个需求,需要根据用户信息拉去三分机构的信贷数据,需要达到一天百万级别,但是经过实际测试,也只能达到40W量级,具体就是通过起多个Spring Boot项目,每个项目1S拉一个用户,基本上一个项目可以拉8W多,5个项目就足够。但是跑了一天发现出现内存使用率过高的问题,并且登录不了机器,所以只能找运维重启。

具体分析原因如下,可以看到主要是程序的内存使用达到上线。

	java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: unable to create new native threadat java.util.concurrent.FutureTask.report(FutureTask.java:122)at java.util.concurrent.FutureTask.get(FutureTask.java:192)at finance.CRM.FrameWork.ProcessControl.run(ProcessControl.java:141)at finance.CRM.Service.Action.UserDataUpdateAction.upload(UserDataUpdateAction.java:56)at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at 

在分析发现其实内存是一个整体上升的趋势,所以第一步就是先分析代码问题,因为JVM会自动GC处理,不可能这么段时间内,内存上升这么快。CPU整体是毕竟平稳的在25%左右。
在这里插入图片描述
经过发现其实有一些空闲对象直接new 并且没有使用,这种情况下 这些对象其实不能被销毁。并且还有一些线程池处理的逻辑,分析之后,发现其实不需要,就删除了。

查看创建了多少线程
jstack -l 22681 | grep ‘java.lang.Thread.State’ | wc -l

查看限制数 ulimit -u

查看当前进程运行线程数
pstree -p pid | wc -l
jstack -F PID 堆栈

通过分析,进程是正常的基本维持在几十个线程之间,并且使用Arthas 也分析了线程和JVM的GC 发现是正常的,所以没有问题了。

链接:
https://arthas.aliyun.com/doc/quick-start.html
https://www.cnblogs.com/zjfjava/p/17016083.html

http://www.lryc.cn/news/217681.html

相关文章:

  • Java基础之类型(内涵面试题)
  • idea好用插件整理
  • 【WinForm详细教程五】WinForm中的MenuStrip 、ContextMenuStrip 、ToolStrip、StatusStrip控件
  • 研究人员发现34个Windows驱动程序易受完全设备接管攻击
  • 最新 vie-vite框架下 jtopo安装使用
  • 基础课20——智能客服系统的使用维护
  • Aop自定义注解生成日志
  • 虚幻引擎:RPC:远端调用
  • 涉及多种位运算操作混合类题目——通过加转三进制(扩大状态,不变枚举量):CF1033F
  • BIOS开发笔记 - DDR基础
  • 基于SpringBoot+Vue的旅游系统、前后端分离
  • 手动制作Docker容器镜像
  • WPF布局控件之WrapPanel布局
  • 实现自动接听电话
  • 计算机网络之网络层(全)
  • PS学习笔记合集
  • 汇总记录Python常用的基础内置方法
  • 基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)
  • Execution failed for task ‘:keyboard_utils:compileDebugKotlin‘.
  • AC修炼计划(AtCoder Regular Contest 163)
  • 持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)
  • 【设计模式】第24节:行为型模式之“模板方法模式”
  • 【考研数学】数学“背诵手册”(二)| 线代及概率论部分
  • Android WMS——WindowState介绍(十三)
  • C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)
  • 【教3妹学编程-算法题】117. 填充每个节点的下一个右侧节点指针 II
  • window10 mysql8.0 修改端口port不生效
  • 欧盟网络安全威胁:虚假与错误信息
  • 006 Linux 进程的概念 | 获取进程的PID
  • 时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测