【发布时间】:2023-03-28 06:56:01
【问题描述】:
我已经生成了一个键空间列表以及它们的大小和 ttl(715 个键空间),并试图分析哪个键空间正在消耗大量内存。 我可以看到键空间占用的总内存为 1.2 MB,但我的 Redis PVC 已填充到 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
【问题讨论】:
标签: bash kubernetes redis gitlab kubernetes-pvc