我已经生成了一个键空间列表,以及它们的大小和ttl (715个键空间),并试图分析哪个键空间消耗了大量内存。我可以看到,键空间占用的内存总量为1.2MB,但我的Redis被填满了13 GB。那么,是什么占据了Redis容器中如此多的内存呢?
Redis版本: 6.0.9图片: bitnami/redis:6.0.9-debian-10-r0
用来生成列表的脚本:
#!/bin/bash
NAMESPACE=$1
SECRET=$2
POD=$3
CONTAINER=$4
PASSWORD_REDIS=$(kubectl get secrets -n $NAMESPACE $SECRET -o jsonpath='{.data.secret'} | base64 -d )
kubectl exec -it -n $NAMESPACE $POD -c $CONTAINER -- redis-cli -a ${PASSWORD_REDIS} KEYS '*' | tail -n +2 > keylist.csv
keylist.csv
declare -a KEYS;
arraylen=0;
i=0;
j=0;
test2(){
arraylen=${#KEYS[@]}
echo "kubectl exec -i -n ${NAMESPACE} ${POD} -c ${CONTAINER} -- redis-cli -h 127.0.0.1 -a ${PASSWORD_REDIS} MEMORY USAGE ${KEYS[j]}" > keys.sh
chmod +x keys.sh
./keys.sh > size.txt 2> /dev/null
echo "kubectl exec -i -n ${NAMESPACE} ${POD} -c ${CONTAINER} -- redis-cli -h 127.0.0.1 -a ${PASSWORD_REDIS} TTL ${KEYS[j]}" > ttl.sh
chmod +x ttl.sh
./ttl.sh > ttl.txt 2> /dev/null
SIZE=$(cat size.txt)
TTL=$(cat ttl.txt)
((j=$j+1))
echo "$j,${KEYS[j]},${SIZE},${TTL}" >> output.csv
if [ $j -ge $arraylen ]; then exit
fi
test2
}
while IFS=') ' read -r slno line; do
LINE=${line};
KEYS+=([i]=$LINE)
i=$[$i+1]
done < keylist.csv
test2
输出如下(第3列为字节大小,第4列为ms中的TTL ):
https://stackoverflow.com/questions/70590211
复制相似问题