zoukankan      html  css  js  c++  java
  • 分析阿里云 ECS 出现内存占用过高原因

    分析阿里云 ECS 出现内存占用过高原因

    简介: 本文主要通过脚本的方式收集和分析 ECS 占用内容过高的原因

    转https://developer.aliyun.com/article/776475

    #!/bin/bash
    # 分析阿里云 ECS 出现内存占用过高原因
    # author:hanli
    
    function freem(){
      echo -e "33[32m---- free 系统内存使用详情 ----33[0m"
      which free && free -m || return 1
    }
    
    function topfree(){
      echo -e "33[32m---- top  系统内存使用详情 ----33[0m"
      which top && top -d 1 -n 1 -o %MEM | grep PID -A 10 || return 1
      TPID=`top -d 1 -n 1 -o %MEM | grep PID -A 10 | awk 'NR==2{print $2}'`
    }
    
    function psfree(){
      echo -e "33[32m---- PS   进程内存使用详情 ----33[0m"
      which ps && ps auxw --sort=-rss | head -n 10  || return 1
      PSPID=`ps auxw --sort=-rss | awk 'NR==2{print $2}'`
    }
    
    function Judage(){
      if [[ $TPID == $PSPID ]]; then
        echo -e "33[32m---- PID $PSPID 占用内容较高----33[0m"
      fi
    }
    
    function meminfo(){
    
      echo -e "33[32m---- 内存分配详情 ----33[0m"
    
      total=$(grep MemTotal /proc/meminfo|awk '{print $2}')
      while read line
      do
        #echo "1 2 3" | { read a b c;echo $a; }
        flag=$(echo $line | egrep -vi "mem*|Vmallo*" | awk '$2!=0{print}' | awk '{print $1}')
        value=$(echo "$line" | egrep -vi "mem*|Vmallo*" |awk '$2!=0{print}' | awk '{print $2}')
        if [[ "$value" -ne "" ]]; then
          precent=$(echo "scale=2; $value / $total * 100" | bc)
          echo -e "$flag 	内存占比 $precent %"
        fi
      done < /proc/meminfo
    }
    
    if  freem && topfree && psfree ; then
      Judage && meminfo
    else
      echo -e "33[31m检查 TOP\PS\FREE 命令是否正常安装33[0m"
    fi

    运行上面脚本,记得安装bc,命令如下:

    #apt install bc

    测试效果如下:


    阿里云服务器内存过高的解决方法



  • 相关阅读:
    Collection LinkedList
    java 浅拷贝和深拷贝
    Collection ArrayList
    Java 集合
    Activity、Fragment、Service、View生命周期
    Android 事件分发机制
    retrofit2.0
    Android 知识图谱
    设计模式-代理模式
    多线程-lock
  • 原文地址:https://www.cnblogs.com/it-tsz/p/15141168.html
Copyright © 2011-2022 走看看