应用OOM-如何触发报警

2,669 阅读1分钟

应用出现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异常,请尽快处理"}}'