博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redisCheckMem脚本
阅读量:4682 次
发布时间:2019-06-09

本文共 2637 字,大约阅读时间需要 8 分钟。

最近维护的redis cluster需要扫描每个实例的内存使用率,首先我们需要获取实例已经使用的内存,获取实例的最大内存配额,两个值相比就能获取到内存使用比例。

实例的最大内存获取方法: 

$REDIS_CLI -h $host -p $port config get maxmemory|tail -1|awk '{printf "%.4f\n", ($1 / 1024 /1024 /1024)}'

实例的已使用内存获取方法:

$REDIS_CLI -h $host -p $port info memory|awk -F : '/used_memory:/ {printf "%.4f\n", ($2 /1024/1024/1024)}'

 

获取到的值单位是字节,我们需要更换成G为了更方便的直观的读取。

最后使用已经使用的内存除以最大的内存就是内存使用的比例,如果超过90%则报警,会进行内存的扩容或数据的清理操作。

实例动态扩容内存的方法: 

# 计算方法 , 例如要分配25G  则: 25*1024*1024*1024 = 26843545600config set maxmemory 26843545600

  

因为集群有太多的redis实例,我写了一个扫描的脚本:

[root@xxx]# cat kv2HostList192.0.171.150192.0.171.152192.0.171.153192.0.171.155192.0.171.156192.0.171.158192.0.171.159192.0.171.160

  

#!/bin/bash############################################# 检查KV集群里面每个实例的内存使用入库############################################STARTPORT=8381ENDPORT=8400WORKDIR="/software/scripts/redisCheckMem"REDIS_HOST_FILE="$WORKDIR/kv2HostList"REDIS_CLI='/data/redisApp/bin/redis-cli'TMP_DB_FILE="$WORKDIR/DBfile.txt"# 定义内存使用比例的阀值W_NUM='90'# Define colorred() {  echo -e "\033[31m $1 \033[0m"}green() {  echo -e "\033[32m $1 \033[0m"}yellow() {  echo -e "\033[33m $1 \033[0m"}AutoCheck() {    datetime=`date +%Y%m%d%H`    >$TMP_DB_FILE    for host in `cat $REDIS_HOST_FILE`        do           echo "------------------------------------------------"           for port in `seq $STARTPORT $ENDPORT`            do            Max_mem=$($REDIS_CLI -h $host -p $port config get maxmemory|tail -1|awk '{printf "%.4f\n", ($1 / 1024 /1024 /1024)}')            Used_mem=$($REDIS_CLI -h $host -p $port info memory|awk -F : '/used_memory:/ {printf "%.4f\n", ($2 /1024/1024/1024)}')            P_used_mem=$(awk "BEGIN{print $Used_mem/$Max_mem*100 }")            yellow "Server:[$host:$port] MemoryInfo : "            echo -e "\t Max_memory: $Max_mem G"            echo -e "\t Used_memory: $Used_mem G"            num=$(echo $P_used_mem|awk -F . '{print $1}')            if [[ $num -gt $W_NUM ]];then                red "\t Percentage used: $P_used_mem"                red "\t Warring: 内存使用率过高,请关注!!!"            else                green "\t Percentage used: $P_used_mem"            fi            echo -n "insert into bdcsc2_clustermonitor_kv (date,ip,port,mem_use,kv) values " >> $TMP_DB_FILE            echo "('$datetime','$host','$port','$Used_mem','kv2');" >> $TMP_DB_FILE            sleep 0.5        done    done}Report2db() {mysql -h192.168.0.47 -uroot -xxx-D report < $TMP_DB_FILE}case "$1" incheck)        AutoCheck        ;;report2db)        AutoCheck        Report2db        ;;*)        echo "Usage: $0 {check | report2db}"esac

  

 

转载于:https://www.cnblogs.com/topicjie/p/7665663.html

你可能感兴趣的文章
Oracle学习之常见错误整理
查看>>
Android实例-处理隐藏输入法后不再显示问题(XE8+小米2)
查看>>
字符串反转(10)
查看>>
HTC Sensation G14开盒
查看>>
Buffer cache spillover: only buffers
查看>>
lock_sga引起的ksvcreate :process(m000) creation failed
查看>>
面向抽象/接口编程以及继承
查看>>
POJ 1704 Georgia and Bob
查看>>
数据库插入数据乱码问题
查看>>
Jquery属性获取——attr()与prop()
查看>>
OVER(PARTITION BY)函数用法
查看>>
uva-11995 - I Can Guess the Data Structure!(栈,优先队列,队列,水题)
查看>>
webpack-dev-server 的服务无法使用的问题
查看>>
day11
查看>>
Collections -- 集合的工具类
查看>>
我组第二次全体会议顺利召开!
查看>>
ideat使用struts2之自定义MVC框架
查看>>
排序_选择排序
查看>>
altium annotate 选项设置 complete existing packages
查看>>
前端的md5加密
查看>>