You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:AWS环境下内存达80%时自动触发HeapDump脚本

解决AWS环境下内存使用率达80%时自动生成HeapDump的问题

先帮你修正现有脚本里的内存使用率计算逻辑,补充完整触发逻辑,再讲AWS环境下怎么让这个脚本自动运行起来。

一、修正并完善内存检测+HeapDump触发脚本

你的现有脚本在内存使用率计算上存在硬编码问题(固定用512M作为总内存),而且逻辑不完整。下面是修正后的完整脚本:

#!/bin/bash

# 内存使用率阈值(按需求设置为80%)
MEMORY_THRESHOLD=80
# 替换为你实际的HeapDump生成脚本路径
HEAPDUMP_SCRIPT="/path/to/your/heapdump-generator.sh"

# 计算当前内存使用率(已使用内存/总内存 * 100,取整数)
USED_MEM=$(free -m | awk 'NR==2 {print $3}')
TOTAL_MEM=$(free -m | awk 'NR==2 {print $2}')

# 避免总内存获取失败导致的除以0错误
if [ "$TOTAL_MEM" -eq 0 ]; then
    echo "[ERROR] 无法获取实例总内存信息"
    exit 1
fi

MEMORY_USAGE=$(( (USED_MEM * 100) / TOTAL_MEM ))
echo "当前内存使用率: ${MEMORY_USAGE}%"

# 触发HeapDump逻辑
if [ "$MEMORY_USAGE" -ge "$MEMORY_THRESHOLD" ]; then
    echo "内存使用率超过阈值,开始生成HeapDump..."
    # 执行HeapDump脚本
    bash "$HEAPDUMP_SCRIPT"
    if [ $? -eq 0 ]; then
        echo "HeapDump生成成功"
    else
        echo "[ERROR] HeapDump生成失败"
    fi
else
    echo "内存使用率未超过阈值,无需操作"
fi

脚本说明

  • 采用已使用内存/总内存的方式计算使用率,适配任意内存规格的EC2实例
  • 增加了异常判断,避免脚本因内存信息获取失败而报错
  • 引入可配置的脚本路径变量,方便你替换为自己的HeapDump生成逻辑
  • 增加执行日志输出,便于后续排查问题

二、AWS环境下的自动触发方案

在AWS上,有两种常用方式实现自动触发,你可以根据实例规模选择:

1. Cron定时检测(适合单台EC2实例)

如果服务仅运行在单台EC2上,直接用Cron定时执行检测脚本即可:

  • 将脚本保存为/opt/check-memory-heapdump.sh,并赋予执行权限:
    chmod +x /opt/check-memory-heapdump.sh
    
  • 编辑Cron任务:
    crontab -e
    
  • 添加以下内容(每分钟执行一次检查,日志输出到指定文件):
    * * * * * /opt/check-memory-heapdump.sh >> /var/log/memory-heapdump.log 2>&1
    

2. CloudWatch告警+SSM Run Command(适合多实例批量管理)

如果服务运行在多台EC2,或想通过AWS控制台集中管理,推荐这个方案:

  • 步骤1:确保EC2实例安装SSM Agent:AWS官方AMI默认自带,自定义镜像需手动安装,实例才能接收SSM命令
  • 步骤2:配置CloudWatch Agent采集内存指标:默认CloudWatch没有内存使用率指标,需要安装CloudWatch Agent并配置采集MemoryUtilization指标
  • 步骤3:创建CloudWatch告警:在CloudWatch控制台创建告警,选择MemoryUtilization指标,设置阈值为80%;告警动作选择SSM Run Command,指定执行你的内存检测脚本(或直接执行HeapDump脚本),并选择目标实例
  • 步骤4:验证触发逻辑:当实例内存使用率超过80%时,CloudWatch会触发告警,SSM自动在目标实例上执行脚本生成HeapDump

注意事项

  • 确保HeapDump脚本有足够权限生成文件,且实例磁盘空间充足(HeapDump文件体积通常较大)
  • 使用CloudWatch方案时,需为EC2实例的IAM角色配置SSM Run Command和CloudWatch Agent的相关权限
  • 可根据实际需求调整Cron执行频率或CloudWatch告警的评估周期

内容的提问来源于stack exchange,提问作者Ricky Vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:25:23