OutOfMemory以后程序已经假死,无法再提供服务,最好的做法是dump内存,发送警告,然后重启服务

我的方案:利用at命令延迟启动

但有一个问题,at最多支持分钟操作,也就是说要1分钟以后才能启动,我的业务允许接受1分钟的延迟,总比收到警告然后等到人工去启动要好一点。

 -XX:OnOutOfMemoryError="at -f /data/deploy/start.sh now +1 minutes;kill -9 %p;"

at命令的安装和启动

yum -y install at
systemctl restart atd

知识点
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/data/log/appOutOfMemory.hprof
OnOutOfMemoryError命令要等到dump文件appOutOfMemory.hprof生成完成以后才会执行
注意直接执行restart.sh是行不通的,因为新启动的进程直接保留了原进程的端口引用,并且这个端口引用无法被kill,Spring boot在初始化完成以后就会发现端口已经被占用了就会停掉,如果使用随机端口的话则可以忽略这个问题。
下面的方案行不通

 -XX:OnOutOfMemoryError="at -f /data/deploy/restart.sh"

改进思路

停止进程可以用自带的参数: -XX:+ExitOnOutOfMemoryError -XX:+CrashOnOutOfMemoryError
思路一: 可以用监控脚本定时每隔10秒监控进程是否存在,如果不存在则启动程序
思路二: 写一个专门启动服务的程序,XX:OnOutOfMemoryError发一条请求任务到这个启动服务的程序
上面的改进思路是有追求的运维干的事情,我不是

[转帖]OutOfMemory自动重启程序的更多相关文章

  1. linux下通过脚本实现自动重启程序的方法

    无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过服务器开发经验的朋友,一定都经历过深夜美 ...

  2. nodejs + koa + typescript 集成和自动重启

    版本说明 Node.js: 16.13.1 全局安装 TypeScript yarn global add typescript 创建项目 创建如下目录结构 project ├── src │ └── ...

  3. 解决Android后台清理APP后,程序自动重启的问题

    最近解决了一个Android APP的bug,发现APP在被后台清理后,会自动重启.现象很奇怪,有的手机(HTC)后台清理后,程序会再次重启,而有的手机(小米)则不会.猜想可能是小米手机内部做了处理, ...

  4. C# 程序自动重启的解决方法

    很多时候,我们有这样的场景,需要让程序自动重启,有很多种方法,比如用微软自带提供的方法,或者自己开辟新的线程重新调用.下面简单介绍两种方法. 方法一. 使用方法Application.Restart( ...

  5. python实现自动重启本程序的方法 技术的漩涡

    python实现自动重启本程序的方法 http://www.jb51.net/article/69174.htm import requests, time url_l = []with open(' ...

  6. windows中实现python,redis服务自动重启(任务计划程序+bat脚本)

    需求:银行电脑无法自动开机,只能 通过 应用相关服务每天自动重启的方式实现 服务更新并且防止服务假死,内存过大 等情况 相关工具:win10系统中,使用windows自带的任务计划程序 和 bat脚本 ...

  7. C#WinForm程序异常退出的捕获、继续执行与自动重启

    本文参考网上搜索的信息,并做了适当修改可以让捕捉到异常之后阻止程序退出. 另给出了通过命令行自动重启的方法. 如果一个线程里运行下面的代码 ; / a; 将会导致程序自动结束,而且没有任何提示信息 但 ...

  8. linux 程序失败自动重启

    最近写了一个spark streaming 程序,但是程序跑着跑着就报错了,而且不会自动重启,以下脚本实现了程序失败自动重启 基本原理:查看程序日志文件是否有ERROR或Exception字样,有说明 ...

  9. jenkins结合supervisor进行python程序发布后的自动重启

    jenkins结合supervisor进行python程序发布后的自动重启 项目背景: 通过jenkins发布kvaccount.chinasoft.com站点的python服务端程序,业务部门同事需 ...

  10. linux上监控tomcat down掉后自动重启tomcat

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

随机推荐

  1. 如果云是水滴,Kubernetes就是水滴管理平台

    摘要:云是由很多小水滴组成的,把每一个计算机想象成小水滴,联合起来就形成了云.一般水滴先出现,然后出现管理水滴的平台(如OpenStack,Kubernetes). 一.云计算–独立宇宙 1.云是由很 ...

  2. pip升级和卸载安装的第三方库

    pip install --upgrade 第三方库名 pip uninstall 第三方库名

  3. iOS上架报错:无法添加以供审核

    ​ 无法提交以供审核 要开始审核流程 必须提供以下项目 您必须为要添加的 app 提供版权信息. 您在提交 app 审核时遇到的问题是因为需要提供版权信息,而您的 app 缺少相关的版权信息.以下是解 ...

  4. 字节跳动基于 ClickHouse 优化实践之“查询优化器”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的 ClickHouse 有一定的了解了,它强大的数据分析性能让人印象深刻.但在字节大量生产使 ...

  5. 火山引擎DataTester:如何使用A/B测试优化全域营销效果

      当前,营销技术步入了全渠道.全周期的全域时代,随着广泛的数据积累,数据科学技术在营销领域发挥着越来越重要的作用,从消费者人群洞察到智能化信息广告投放,营销的提效让企业得以在转化的每个环节提升影响力 ...

  6. Solon2 开发之IoC,六、提取 Bean 的函数进行定制开发

    为什么需要提取Bean的函数?绝不是闲得淡疼.比如:控制器的@Mapping:再比如:Xxl-Job的@XxlJob.这些都是要提取Bean的函数并定制加工的. 1.比如提取 @XxlJob 注解的函 ...

  7. 分享个本地maven配置

    用阿里云的快有点受不了了,经常有包下载不了 settings.xml <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0&q ...

  8. python argparse传入布尔参数不生效解决

    前言 在一个需要用到flag作为信号控制代码中一些代码片段是否运行的,比如"--flag True"或者"--flag False". 但是古怪的是无法传入Fa ...

  9. ICASSP 2022 | 前沿音视频成果分享:基于可变形卷积的压缩视频质量增强网络

    阿里云视频云视频编码与增强技术团队最新研究成果论文<基于可变形卷积的压缩视频质量增强网络>(Deformable Convolution Dense Network for Compres ...

  10. 洛谷P2678:跳石头(贪心 + 二分)

    题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...