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

故障重现, JAVA进程内存不够时突然挂掉模拟

背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下:

# Set larger code cache with -XX:ReservedCodeCacheSize= # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:2673), pid=28610, tid=139813184919296  

日志分析原因很简单,服务器的内存不够用,导致进程崩溃

JAVA涉及到内存不够用分两种情况:

1, 当超出JVM的分配的内存时,JAVA进程并不会退出只是结束当前的线程

2, 当服务器内存不够时,linux杀死使用内存的一个进程

很简单,但很容易忽略,因为在启动JAVA进程时,服务器检查的是当前内存,并不是可用额度。如,服务器有1G内存,而启动了两个1G内存的JAVA服务是不会报错的,但当内存紧张时,linux会kill任意JAVA服务,造成影响

我用代码重现模拟下这种情况

准备如下

服务器1台,1G内存

模拟JAVA进程,以每秒递增10m内存分配的去榨干服务器

服务器内存总量

发现整个可用内存大小在 3G附近(小于)

加入一个JAVA程序,开启一个线程以每秒10m的内存去申请内存

代码如下:

模拟第一种情况

运行  java -Xmx1024m -Xms1024m org.hejinbin.memory.test.TestStepByStep

观察JVM垃圾回收情况,发现在程序把JVM的内存的heap慢慢耗光

直到再也无法分配10m大小的对象,然后程序输出

观察后发现, 知道JVM内存被榨干,这条JAVA线程已经被停止,但JAVA进程

也是存活的,而且等待下一次垃圾回收,死去线程的内存将被回收,系统恢复。 造成的影响仅仅是影响本次请求。

模拟第二种情况

我模拟3个JAVA服务进程,每个进程分配1G, 然后同时递增分配内存

开启多个linux窗口同时运行:

java -Xmx1024m -Xms1024m org.hejinbin.memory.test.TestStepByStep

一段时间后:

the total use : 830m 
the total use : 840m 
the total use : 850m 
the total use : 860m 
Killed

其中一条线程被kill了

另外两个进程继续跑,知道线程异常,当然最后两个进程也不会挂掉

另:观察到kswapd0占用CPU 高,交互虚拟内存

结论:

1, 当超出JVM的分配的内存时,JAVA进程并不会退出只是结束当前的线程

2, 当服务器内存不够时,linux杀死使用内存的一个进程

3,  把系统拆分成多个服务部署在同一台机时需要特别注意,JVM启动时分配的内存只是申请(其实体现在VIRT),当一台服务器运行多个JAVA进程时请保留足够的可用内存 (大于分配给各个JVM的进程之和)

接下来的问题:

1, 如何确认是因为内存过大被linux系统kill掉

答: 可以去linux的日志在/var/log/syslog 里能找到日志,如: grep "Out of memory" syslog , 能找到刚刚被杀线程的原因

2,除了内存占用过大被kill,还有哪种原因会被kill

答: CPU时间占用过久也是会被杀掉,详情下一篇模拟

3,为什么我模拟的没有产生hs_err_pid*.log日志?

答: 因为日志是再进程尝试重启后产生, 当系统内存不足,系统kill掉进程,此时守护进程又尝试拉起进程,故产生了err日志。可以在进程A占用了大部分内存时手工重启线程B模拟,能在JAVA程序的运行生成该日志

 

 

相关文章:

故障重现, JAVA进程内存不够时突然挂掉模拟

背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:26…...

数画-AI绘画-免费的人工智能AI绘画网站

文章目录 AIGC什么是AI作画?Prompt数画AIGC的未来发展结语 AIGC AIGC(AI Generated Content)是指利用人工智能生成内容。是利用人工智能来生成你所需要的内容,GC的意思是创作内容。与之相对应的概念中,比较熟知的还有P…...

ElasticSearch安装、启动、操作及概念简介

ElasticSearch快速入门 文件链接:https://pan.baidu.com/s/15kJtcHY-RAY3wzpJZIn4-w?pwd0k5a 提取码:0k5a 有些软件对于安装路径有一定的要求,例如:路径中不能有空格,不能有中文,不能有特殊符号&#xf…...

Linux用户管理

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 前言 努力是最好的捷径! 目录 1.Linux基于用户身份对…...

Docker 的安装和镜像容器的基本操作

文章目录 一、Docker 概述1、Docker的概念2、容器的优点3、容器与虚拟机的区别4、容器在内核中支持2种重要技术5、Docker核心概念 二、Docker的安装1、docker的安装步骤2、实例操作:安装docker 三、Docker 镜像操作1、搜索镜像2、获取镜像3、镜像加速下载4、查看镜像…...

被盗的ChatGPT账户在暗网热销,ChatGPT的隐私和安全问题依旧值得关注

在过去的一个月,Check Point研究人员在暗网上观察到了与ChatGPT相关的各种讨论和交易。暗网上最新的活动包括泄露和免费发布ChatGPT账户的凭据,以及交易被盗的ChatGPT账户。 根据Check Point进行的一项研究,从今年3月以来,被盗的…...

OpenCV2 计算机视觉应用编程秘籍:6~10

原文:OpenCV2 Computer Vision Application Programming Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线…...

如何对农田温室气体进行有效模拟?

农业是甲烷(CH4)、氧化亚氮(N2O)和二氧化碳(CO2)等温室气体的主要排放源,占全产业排放的13.5%。农田温室气体又以施肥产生的N2O和稻田生产产生的CH4为主,如何对农田温室气体进行有效…...

java数据结构刷题练习

class Solution {public boolean containsDuplicate(int[] nums) {Arrays.sort(nums);for(int i1;i<nums.length;i){if(nums[i-1]nums[i])return true;}return false; } }作者&#xff1a;affectionate-albattani7tn 链接&#xff1a;https://leetcode.cn/problems/contains…...

《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议

密码协议是指两个或者两个以上参与者使用密码算法时&#xff0c;为了达到加密保护或安全认证目的而约定的交互规则。 密钥交换协议 公钥密码出现之前&#xff0c;密钥交换很不方便&#xff0c;公钥密码可以在不安全信道上进行交换&#xff0c;交换的密码协议是为了协商会话密钥…...

Qt Quick - TabBar

Qt Quick - TabBar使用总结 一、概述二、调整选项卡三、Flickable标签三、定制化 一、概述 TabBar其实就是选项卡&#xff0c;TabBar是由TabButton控件填充&#xff0c;TabBar可以与任何提供currentIndex属性的布局或容器控件一起使用&#xff0c;如StackLayout或SwipeView。T…...

ElasticSearch集群搭建

一、ElasticSearch 集群 1.1 搭建集群 Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群&#xff0c;三个Master节点最多只能故障一台Master节点&#xff0c;如果故障两个Master节点&#xff0c;Elasticsearch将无法组成集群.会报错&…...

【pan-sharpening 攻击:目标检测】

Adversarial pan-sharpening attacks for object detection in remote sensing &#xff08;对抗性泛锐化攻击在遥感目标检测中的应用&#xff09; 全色锐化是遥感系统中最常用的技术之一&#xff0c;其目的是将纹理丰富的PAN图像和多光谱MS图像融合&#xff0c;以获得纹理丰…...

nginx反向代理_负载均衡的配置

说明 两台虚拟机&#xff1a; 88节点是自己的虚拟机 66节点是小组成员的虚拟机&#xff0c;我们暂且叫同学机 tomcat端口&#xff0c;分别为8081和8082 总结就是&#xff1a; 自己虚拟机上面安装nginx和tomcat8082 同学机上安装tomcat8081 一、开始安装nginx&#xff08;只安装…...

程序员随时担心被抛弃......大厂外包值不值得去?

外包”这个词经常被人提及&#xff0c;而且也经常被我们所“鄙夷”&#xff0c;很多人都在四处问&#xff1a;“软件外包公司到底能不能去”&#xff1f; 外包公司到底能不能学到真正的技术&#xff1f; 外包大厂能不能去&#xff1f; 今天就给大家详细分享下外包的利与弊 做…...

C++解释器模式实战:从设计到应用的全面指南

目录标题 第一章&#xff1a;解释器模式简介&#xff08;Introduction to the Interpreter Pattern&#xff09;1.1 模式定义&#xff08;Pattern Definition&#xff09;1.2 解释器模式的用途&#xff08;Uses of the Interpreter Pattern&#xff09; 1.3 解释器模式的优缺点…...

使用华为云免费资源训练Paddle UIE模型

一、创建虚拟环境 好习惯&#xff0c;首先创建单独的运行环境 conda create -n uie python3.10.9 conda activate uie 二、安装paddle框架及paddlenlp 2.1 参考官方文档安装paddle 开始使用_飞桨-源于产业实践的开源深度学习平台 首先查看自己服务器cuda版本&#xff0c;…...

深度学习12. CNN经典网络 VGG16

深度学习12. CNN经典网络 VGG16 一、简介1. VGG 来源2. VGG分类3. 不同模型的参数数量4. 3x3卷积核的好处5. 关于学习率调度6. 批归一化 二、VGG16层分析1. 层划分2. 参数展开过程图解3. 参数传递示例4. VGG 16各层参数数量 三、代码分析1. VGG16模型定义2. 训练3. 测试 一、简…...

Doris(3):创建用户与创建数据库并赋予权限

Doris 采用 MySQL 协议进行通信&#xff0c;用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群。选择 MySQL client 版本时建议采用5.1 之后的版本&#xff0c;因为 5.1 之前不能支持长度超过 16 个字符的用户名。 1 创建用户 Root 用户登录与密码修改 Doris 内置 r…...

深入浅出 Golang 内存管理

了解内存管理~ 前言&#xff1a; 本节课主要介绍了内存管理知识与自动内存管理机制&#xff0c;并对目前 Go 内存管理过程中存在的问题提出了解决方案&#xff0c;同时结合了上次课程学习的《Go 语言性能优化》相关知识&#xff0c;提供可行性的优化建议 … 自动内存管理 Go…...

告别底噪和电流声:DIY蓝牙音箱的音频电路避坑指南(从TPA2019布线到电源滤波)

蓝牙音箱DIY进阶指南&#xff1a;从电路设计到音质优化的全流程解析 在电子DIY领域&#xff0c;蓝牙音箱制作看似简单&#xff0c;但要实现专业级的音质表现却需要跨越诸多技术门槛。许多爱好者完成基础组装后&#xff0c;常会遇到底噪明显、高频失真或低频浑浊等问题——这往往…...

从零开始玩转translategemma-27b-it:Ollama环境搭建与提示词详解

从零开始玩转translategemma-27b-it&#xff1a;Ollama环境搭建与提示词详解 1. 环境准备与快速部署 想要体验强大的图文翻译能力&#xff0c;首先需要搭建好运行环境。translategemma-27b-it是一个基于Ollama部署的翻译模型&#xff0c;支持文本和图片的翻译功能。 1.1 系统…...

P1095 守望者的逃离【洛谷算法习题】

P1095 守望者的逃离 网页链接 P1095 守望者的逃离 题目背景 NOIP2007 普及组 T3 题目描述 恶魔猎手尤迪安野心勃勃&#xff0c;他背叛了暗夜精灵&#xff0c;率领深藏在海底的娜迦族企图叛变。 守望者在与尤迪安的交锋中遭遇了围杀&#xff0c;被困在一个荒芜的大岛上。…...

OpCore-Simplify:让OpenCore EFI配置变得智能高效

OpCore-Simplify&#xff1a;让OpenCore EFI配置变得智能高效 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 问题引入&#xff1a;为什么Hackintosh配…...

Joy-Con Toolkit终极指南:快速解锁Switch手柄隐藏功能

Joy-Con Toolkit终极指南&#xff1a;快速解锁Switch手柄隐藏功能 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit是一款专为任天堂Switch手柄设计的开源控制软件&#xff0c;为游戏玩家提供前所…...

2026全年求职时间线|应届生必看,错过可能再等一年

关注 霍格沃兹测试学院公众号&#xff0c;回复「资料」, 领取人工智能测试开发技术合集如果你是2026届、2027届毕业生&#xff0c;这篇文章建议收藏转发。应届生身份只有一次&#xff0c;用好了是红利&#xff0c;用错了可能错过一整年机会。都说今年工作难找&#xff0c;那我们…...

Python智能内存管理策略深度评测(CPython 3.9–3.12全版本横评):谁真正降低了47.6% OOM风险?

第一章&#xff1a;Python智能内存管理策略深度评测总览Python 的内存管理并非由开发者手动控制&#xff0c;而是依托于一套高度集成的智能机制——包括引用计数、循环垃圾回收器&#xff08;gc 模块&#xff09;以及内存池&#xff08;pymalloc&#xff09;三层协同体系。这种…...

最后的GIL堡垒正在崩塌:现在不掌握这6种无锁Python并发安全范式,你的微服务将在Q3大规模core dump

第一章&#xff1a;GIL消亡史与无锁Python并发的必然性Python 的全局解释器锁&#xff08;GIL&#xff09;自1991年诞生起&#xff0c;便成为 CPython 解释器中一道不可逾越的并发屏障。它确保同一时刻仅有一个线程执行 Python 字节码&#xff0c;虽简化了内存管理与引用计数实…...

从单工具到插件集:在Coze IDE里用Python/Node.js打造你的专属工具链

从单工具到插件集&#xff1a;在Coze IDE里用Python/Node.js打造你的专属工具链 在当今快速发展的AI应用开发领域&#xff0c;开发者们不再满足于简单的API调用和单一功能实现。随着业务逻辑的复杂化&#xff0c;如何高效地构建、管理和部署一系列相互关联的工具链&#xff0c;…...

核心产品强势放量,扭亏为盈的康希诺未来怎么看?

3月30日晚间&#xff0c;康希诺发布2025年年度报告。报告期内&#xff0c;公司实现营业收入10.68亿元&#xff0c;同比增长26.18%&#xff1b;实现归母净利润2787.27万元&#xff0c;成功实现扭亏为盈&#xff0c;较2024年实现重大逆转。2025年&#xff0c;康希诺凭借核心产品放…...