JVM启动参数脚本的再学习与研究


摘要

学无止境
前段时间一直再研究JVM参数调优.
但是最近也在想不应该仅研究如何调优.
因为不管怎么设置, 总有猪队友会把环境搞崩.
所以应该想办法在无人值守的情况下能够启动服务.
systemd这种主流方式有时候不靠谱, 进程可能判断生死不准确.
所以还是想通过JVM的参数进行一定程度的优化.

启动脚本的优化方式

EXTRACONFIG="-XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 -XX:+SafepointTimeout \
-XX:SafepointTimeoutDelay=2000 -XX:+UseCountedLoopSafepoints -XX:-UseBiasedLocking \
-XX:+UnlockDiagnosticVMOptions -XX:GuaranteedSafepointInterval=0 -XX:+PrintGCApplicationStoppedTime \
-XX:+PrintGCDetails -XX:-DisableExplicitGC -XX:+PrintGC -XX:+PrintGCDateStamps -XX:-UseGCOverheadLimit \
-XX:+PrintGCTimeStamps -Xloggc:./dump/gclog -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump " # 注意增量配置不应该直接用于生产, 此配置可以用来分析系统卡顿, STW时间较久等问题.
# safePoint 主要是打印安全点的信息.
# Print等参数可以用来打印出数据进行分析.
# GC以及GCDtails 可以展示详细的GC信息,便于分析
# HeapDump可以进行一场时堆栈的转储
# -XX:-UseGCOverheadLimit 可以抑制部分98时间内只能释放2%内存的提示, 实现fastfailue. 快速启动.

异常后处理的方法

RESTARTCONFIG="-XX:+HeapDumpOnCtrlBreak  -XX:OnOutOfMemoryError="at -f /myaoo/restart.sh now +0.5 minutes;kill -9 %p;""

# 注意 虽然有网页收可以通过ctrl + break的方式抓取dump 但是我发现好像并没有效果
# 注意可以使用 OnOutOfMemoryError的方式执行脚本
# 建议是自定义脚本, 设置好路径与权限, 能够一键执行.
# 可以通过 %p 获取当前进程信息执行清理操作, 避免内存占用光了. 可以通过 yum install at -y 或者是 apt-get install at 的方式来安装 at命名 便于延时执行脚本
也可以使用 sleep的脚本来实现. 如果使用 at 脚本需要将atd服务置为可用状态
systemctl enabled atd && systemctl restart atd

免责声明

其实可以通过K8S的POD保活机制来实现服务的高可用更加方便.
手工写脚本的方式其实需要判断很多关键事项.
如果基础设施不完备的情况下,又不想每天定闹钟看预警是可以自动化来处理的.
自己博客里写的很多东西测试为主, 生产必须要经过严格测试才可以做修改. 生产是很重要的, 必须要敬畏生产,生产环境经常是: 左右天堂右手地狱.稍有不慎可能满盘皆输
成年人的世界没有简单二字, 想做好一个事情其实很难
但是搞糟他却非常容易.
希望产品不宕机,大家都可以好好睡觉.

JVM启动参数脚本的再学习与研究的更多相关文章

  1. NetBeansRCP-添加/修改NetBeans的JVM启动参数

    NetBeans运行的速度实在是不敢恭维.还好机器配置还可以,修改其JVM启动参数命令行,以期运行的更加顺畅. 那么如何修改NetBeans IDE的JVM参数呢? 1.到NetBeans IDE的安 ...

  2. Eclipse jvm启动参数在哪设置

    学习并转载自https://jingyan.baidu.com/article/624e7459653ca534e8ba5a26.html Java是一门非常受欢迎的编程语言,Java的开发人员多数使 ...

  3. JVM系统属性 OS环境变量 JVM启动参数

    JVM系统属性(System Properties) 1.不支持通过文件查看和设置系统属性 2.可以通过JDK自带的工具jvisulavm.exe查看 3.可以在Java程序中使用API来查看系统属性 ...

  4. JVM启动参数小结

    一:JVM启动参数共分为三类:         其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:        其二是非标准参数(-X),指的是JVM底层的一些配置参数, ...

  5. 业务系统的JVM启动参数推荐

    关键业务系统的JVM启动参数推荐,原文链接请参见:http://calvin1978.blogcn.com/articles/jvmoption-2.html

  6. jvm启动参数设置 -Dfile.encoding=UTF-8 解决freemark乱码

    今天一个spring boot应用windows跑起来后页面显示乱码,加上jvm启动参数为utf-8后,页面显示正常.

  7. jvm 启动参数设置(转载)

    JVM启动参数 http://onlyor.iteye.com/blog/1722413 博客分类: java java java启动参数共分为三类其一是标准参数(-),所有的JVM实现都必须实现这些 ...

  8. JVM 启动参数,共分为3类

    JVM 启动参数,共分为3类: 类别 说明 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 非标准参数(-X) 这些参数不是虚拟机规范规定的.因此,不是所有VM的实现(如:H ...

  9. 【java】java获取JVM启动参数 System.getProperty

    java获取JVM启动参数 System.getProperty取 -D后的key即可 public class Test { public static void main(String[] arg ...

  10. Java JVM 启动参数

    JVM 启动参数 java -Xmx4096m // 设置JVM最大可用内存为4096m. -Xms4096m // 设置JVM促使内存为4096m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成 ...

随机推荐

  1. GaussDB(DWS)字符串处理函数返回错误结果集排查

    摘要:在使用字符串处理函数时,有时会出现非预期结果的场景.在排除使用问题后,应该从encoding和数据本身开始排查. 本文分享自华为云社区<GaussDB(DWS)字符串处理函数返回错误结果集 ...

  2. PPT 插件

    https://www.aboutppt.com/ 小顽简报 https://www.yuque.com/wonvy/pptools/veu9yq https://pan.baidu.com/s/10 ...

  3. Mac问题记录

    1. "App" can't be opened because Apple cannot check it for malicious software. 一般来说,在Syste ...

  4. 鸿蒙HarmonyOS实战-工具安装和Helloworld案例

    前言 HarmonyOS是华为自主开发的操作系统,它在2020年9月正式发布.它最初被称为鸿蒙OS,后来更名为HarmonyOS.HarmonyOS旨在提供一种可在各种设备上无缝运行的统一操作系统,包 ...

  5. CodeFormer一款既能人脸修复、还能视频去码的AI软件,附下载使用教程

    CodeFormer是一款强大的人工智能工具,主要用于图像和视频的修复和增强.它基于深度学习技术,特别是人脸复原模型,可以轻松修复和增强面部图像,提升照片和视频的质量和视觉效果 工作原理 1.通过自动 ...

  6. Java 使用 slf4j + log4j 写日志

    没有SpringBoot等框架的情况下 pom.xml: <properties> <slf4j.version>1.7.26</slf4j.version> &l ...

  7. AtCoder Beginner Contest 217 D~E

    比赛链接:Here ABC水题, D - Cutting Woods 题意:开始一根木棒长度为 \(n\) 并以 \(1\) 为单位在木棒上标记\((1\sim n)\) ,输出 \(q\) 次操作 ...

  8. HDU - 2897 邂逅明下 (简单博弈)

    题目链接: https://vjudge.net/problem/HDU-2897 题目大意: 就是现在一堆石子有n颗, 每次只能拿走p~q颗, 当剩余少于p颗的时候必须一次拿完 拿走最后一颗的人败 ...

  9. 【每日一题】7.月月查华华的手机 (枚举 or 序列自动机)

    题目链接:Here 题意总结:\(N\) 次查询串 \(B\) 是否是 \(A\) 的子序列. 思路一 个人做法,枚举原字符串的每一位,如果匹配当前字符串的字符则 m++ 直到字符串枚举完毕或者 m ...

  10. Educational Codeforces Round 6 620E. New Year Tree(DFS序+线段树)

    题目链接:点击打开链接 题意:给你一棵树,编号1~n,告诉你根结点是1. 每次有两个操作: 1,将以v为根的子树的结点全部染成颜色c 2,问以v为根的紫书的结点的颜色种类. 思路:如果这是一条线段的话 ...