遇到疯狂GC时进行判断然后重启服务的方法-GPT学习使用之三
遇到疯狂GC时进行判断然后重启服务的方法-GPT学习使用之三
背景
最近怀疑产品遇到了第三方组建的bug
Groupdocs转换渲染某些文件时出现了严重的FullGC的情况
而且出现的奇怪的功效学GC
ergonomics 的提示
因为不好发现, 所以同事想通过遇到异常时自动进行重启来暂时规避这个问题.
因为这个服务仅是一个文档转换和预览, 可以不用考虑太多的数据一致性等问题
所以周末时间想着帮忙写一写
思路
利用jvm的 +XX:printgc 的配置将gc日志打印出来.
然后分析GClog, 判断最近三分钟,如果有两次ergonomics的fullGC处理就重启服务.
如果没有就继续循坏.
每十秒钟执行一次判断与循环.
脚本编写过程-1
第一步. 增加killscirpt和startscript
便于关闭和启动服务. 可以在killscript 之前增加抓取dump或者是jstack的脚本.
启动脚本里面可以增加日志的备份脚本.
第二步. 编写主脚本.分析gclog日志.循环判断full GC产生的日期.
如果是在最近几分钟内则 数据 +1 然后判断大于两次, 执行第一步的脚本.
第三步. 设置脚本启动,循环判断.
脚本编写过程-2
神通数据库的李诺帆老师推荐了edge的webtag的GPT插件
可以通过这个插件获取一些编写脚本的简单处理
效果如图示:


脚本内容
#! /bin/bash
#备注: 本脚本的用途是每20秒判断gclog内GC的次数, 如果ergonomics的gc次数在3分钟内超过2次,那么执行重启操作.
#需要严格注意本脚本的使用, 必须修改好脚本的启动脚本, 配置参数, 时间间隔等.
#必须严格进行测试, 不要随意上生产.
while true
do
interval=20
now=`date +%Y%m%d%H%M`
timeinfo=`date -d '-3 min' +%s`
#timeinfo=`date -d '-10 days' +%s`
gclogfile="/myapp/gclog.log"
gclogbackup="/myapp/gclog_${now}.log"
count=0
for num in $(for i in `cat /myapp/gclog.log |grep -i ergonomics |awk '{print $1}' |awk -F + '{print $1}'`; do echo ` date -d ${i} +%s` ; done)
do
if [ $num -gt $timeinfo ]
then
((count++))
fi
done
echo "最近周期内的ergonomics的GC次数为: $count"
if [ $count -gt 2 ]
then
scp -rp $gclogfile $gclogbackup
echo "" > $gclogfile
echo "关闭服务, 等待五秒钟重启,请自行维护脚本"
/deploy/killscript
sleep 5
echo "重启服务,请自行维护脚本"
/deploy/startscript
fi
sleep $interval
done
进行监控与处理
编写脚本为 checkgctime
然后chmod +x checkgctime
然后 nohup ./checkgctime &
进行测试验证.
注意务必要进行严格测试, 避免出现安全隐患
GPT能够帮自己使用语法, 但是很多思路还是需要自己串联
他给出的脚本,大部分都很初级, 可能无法彻底实现自己的业务场景.
遇到疯狂GC时进行判断然后重启服务的方法-GPT学习使用之三的更多相关文章
- daemon与服务(service)及重启服务的方法
简单地说,系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面),这个服务就称为service.而实现这个service的程序我们就称它为daemon.实现某个服务是需要一个daemon在后 ...
- JAVA中GC时finalize()方法是不是一定会被执行?
在回答上面问题之前,我们一定要了解JVM在进行垃圾回收时的机制,首先: 一.可达性算法 要知道对象什么时候死亡,我们需要先知道JVM的GC是如何判断对象是可以回收的.JAVA是通过可达性算法来来判断 ...
- zabbix通过curl命令判断web服务是否正常并自动重启服务
zabbix通过curl命令判断web服务是否正常并自动重启服务 主要思路: 通过curl命令获取服务器响应码,如果正常返回200,不正常返回000 具体命令: curl -I -s -w " ...
- 滚动条大于120px时,判断pc端的情况下,导航条固定定位
//滚动条大于120px时,判断pc端的情况下,导航条固定定位 $(window).scroll(function(){ var viewWidth=$(document).width() var ...
- JS垃圾回收——和其他语言一样,JavaScript 的 GC 策略也无法避免一个问题:GC 时,停止响应其他操作,这是为了安全考虑
JavaScript 内存管理 & 垃圾回收机制 标记清除 js 中最常用的垃圾回收方式就是标记清除.当变量进入环境时,例如,在函数中声明一个变量,就将这个而变量标记为“进入环境”.从逻辑上讲 ...
- MYSQL如何在创建表时添加判断条件
大家好,我是小皓. 一.背景 今天在博主练习MYS创建表操作时遇到一个语法报错,就想着来和大家分享一下MYSQL如何在创建表时添加判断条件: ERROR 1064 (42000): You have ...
- 安装.NET Framework组件时,电脑意外重启后再次安装失败
因为软件运行环境需要安装.Net Framework,我安装的是2.0sp版本,可以安装过程中计算机意外关闭,重新打开后再次安装却出现安装失败的提示,具体内容是: 产品: Microsoft .NET ...
- linux下通过脚本实现自动重启程序的方法
无论什么程序都不可能完美无缺,理论上,任何程序都有 Core Dump 的一天,正式运营的程序,尤其是服务器程序,一旦 Core Dump ,后果不堪设想,有过服务器开发经验的朋友,一定都经历过深夜美 ...
- jvm高级特性(2)(判断存活对象算法,finaliza(),方法区回收)
JVM高级特性与实践(二):对象存活判定算法(引用) 与 回收 垃圾回收器GC(Garbage Collection) 于1960年诞生在MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语 ...
- samba修改smb.conf后,不需要重启服务,就可生效
在修改完smb.conf后,不需要重启服务.在Centos7.3与Ubuntu18.04上验证都没有问题. 猜测可能的原因:samba是在客户端进行连接时,smb服务程序读取smb.conf配置文件信 ...
随机推荐
- Java NIO 简介
NIO 简介 自 JDK 1.4 以来,引入了一个被称为 NIO(New IO) 的 IO 操作,是标准 IO 一个替代品.Java 的 NIO 提供了一种与传统意义上的 IO 不同的编程模型.有 ...
- 浏览器工作原理和实践(二)——JavaScript
<浏览器工作原理与实践>是极客时间上的一个浏览器学习系列,在学习之后特在此做记录和总结. 一.执行流程 实际上变量和函数声明在代码里的位置是不会改变的,而且是在编译阶段被 JavaScri ...
- C++篇:第二章_运算符_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 二.运算符 (一)运算符本身运用限制 %取余运算符要求运算数必须是整型,浮点数取 ...
- 数据交换不失控:华为云EDS,让你的数据你做主
摘要:华为云EDS在"可信.可控.可证"的框架基础上进行数据空间的关键设计,打造数据可控交换的全栈能力. 数字社会,每时每刻都有海量数据产生,数据也逐渐从生产过程的附属产物,逐渐成 ...
- 再拔头筹,FusionInsight为华为云大数据打造硬实力
摘要:在IDC2020大数据报告中,有云服务厂商.传统ICT 厂商,以及大数据时代的创企等三类"玩家",为何华为云能够脱颖而出? 近日,IDC发布<IDC MarketS ...
- FusionInsight怎么帮「宇宙行」建一个好的「云数据平台」?
摘要:基于数据湖架构,应用效率得以极大提升.经过几年发展,当前集群规模已经达到1000多节点,数据量几十PB,日均处理作业数大概是10万,赋能于180多个总行应用和境内外41家分行及子公司. 本文分享 ...
- 学会这5种JS函数继承方式,前端面试你至少成功50%
摘要:函数继承是在JS里比较基础也是比较重要的一部分,而且也是面试中常常要问到的.下面带你快速了解JS中有哪几种是经常出现且必须掌握的继承方式.掌握下面的内容面试也差不多没问题啦~ 本文分享自华为云社 ...
- 云小课|CDN第5课 CDN入门之—我的网站可以用CDN加速吗?
摘要:CDN(Content Delivery Network,内容分发网络)通过将源站资源缓存到遍布各地的边缘节点服务器上,用户可以就近获取资源,从而达到加速的效果. 本文分享自华为云社区<[ ...
- vue2升级vue3: Event Bus 替代方案
在看 https://v3-migration.vuejs.org/breaking-changes/events-api.html 在vue2里面 In 2.x, a Vue instance co ...
- 火山引擎DataLeap的Data Catalog系统搜索实践 (上)
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 摘要 火山引擎大数据研发治理套件 DataLeap的Data Catalog系统通过汇总和组织各种元数据,解决了数 ...