应用出现OOM异常,程序员如何马上感知呢,从而快速解决问题?
OOM 意味着程序存在着漏洞,可能是代码或者 JVM 参数配置引发的
下面会介绍一个轻量级的JVM参数: 从而解决Java 进程触发了 OOM 后如何触发报警问题
如何触发
JVM 启动参数配置添加以下参数:
-
-XX:+HeapDumpOnOutOfMemoryError 导出堆信息到指定文件,默认关闭
-
-XX:HeapDumpPath=./(参数为 Dump 文件生成路径) 导出堆信息指定路径, 配合 -XX:+HeapDumpOnOutOfMemoryError 使用
-
-XX:OnOutOfMemoryError=./dev-support/oom.sh 抛出 OOM 时执行 shell 脚本
-XX:OnOutOfMemoryError 参数很关键 可以做很多 OOM 触发后的个性化操作,重启应用或者通知开发解决问题。
通过 -XX:OnOutOfMemoryError=./dev-support/oom.sh 指定在 OOM 时执行了某shell脚本,向所在服务的群组触发了通知。
# 钉钉群里创建机器人
# 设置自定义关键字:报警
curl 'https://oapi.dingtalk.com/robot/send?access_token=你的tocken值' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"***应用OOM异常,请尽快处理"}}'