本文使用 redis
自带的 redis-benchmark
工具进行压力测试
参数说明
命令格式如下:
Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]
参数说明如下:
选项 | 描述 | 默认值 |
---|---|---|
-h | 指定服务器主机名 | 127.0.0.1 |
-p | 指定服务器端口 | 6379 |
-s | 指定服务器 | socket |
-c | 指定并发连接数 | 50 |
-n | 指定请求数 | 10000 |
-d | 以字节的形式指定 SET/GET 值的数据大小 | 2 |
-k | 1=keep alive 0=reconnect | 1 |
-r | SET/GET/INCR 使用随机 key, SADD 使用随机值 | |
-P | 通过管道传输 <numreq> 请求 | 1 |
-q | 强制退出 redis。仅显示 query/sec 值 | |
--csv | 以 CSV 格式输出 | |
-l | 生成循环,永久执行测试 | |
-t | 仅运行以逗号分隔的测试命令列表 | |
-I | Idle 模式。仅打开 N 个 idle 连接并等待 |
例
仅显示指标数据测试100000次: redis-benchmark -q -n 100000
常见测试用例
- 压测指定命令列表
get,set
redis-benchmark -h 127.0.0.1 -p 6086 -c 50 -n 10000 -t set,lpush
- 长链接压测
redis-benchmark -h host -p port -t ping -c 10000 -n 500000 -k 1
- 命令方式
redis-benchmark -n 100000 -q script load “redis.call(‘set’,’foo’,’bar’)”
常见指标检查
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: check_redis.sh
# Revision: 1.0
REDIS_CLI_COMMAND="redis-cli"
REDIS_HOST="172.18.1.*"
REDIS_PORT="28001"
ARGS=1
if [ $# -ne "$ARGS" ];then
echo "Please input one arguement:"
fi
#!/bin/bash
while getopts 's:p:' OPT; do
case $OPT in
s)
REDIS_HOST="$OPTARG";;
p)
REDIS_PORT="$OPTARG";;
h)
echo "Usage: `basename $0` [-s server] [-p port] command";
echo " command: connected_clients, used_memory_rss_human ...etc.";
exit 1;;
esac
done
shift $((OPTIND - 1))
COMMAND=$@
echo "the redis server: $REDIS_HOST:$REDIS_PORT command: $COMMAND"
case $COMMAND in
connected_clients)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "connected_clients" | awk -F':' '{print $2}'`
echo $result
;;
used_memory_rss_human)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "used_memory_rss_human" | awk -F':' '{print $2}'`
echo $result
;;
used_memory_peak_human)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "used_memory_peak_human" | awk -F':' '{print $2}'`
echo $result
;;
total_connections_received)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "total_connections_received" | awk -F':' '{print $2}'`
echo $result
;;
instantaneous_ops_per_sec)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "instantaneous_ops_per_sec" | awk -F':' '{print $2}'`
echo $result
;;
instantaneous_input_kbps)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "instantaneous_input_kbps" | awk -F':' '{print $2}'`
echo $result
;;
instantaneous_output_kbps)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "instantaneous_output_kbps" | awk -F':' '{print $2}'`
echo $result
;;
rejected_connections)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "rejected_connections" | awk -F':' '{print $2}'`
echo $result
;;
expired_keys)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "expired_keys" | awk -F':' '{print $2}'`
echo $result
;;
evicted_keys)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "evicted_keys" | awk -F':' '{print $2}'`
echo $result
;;
keyspace_hits)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "keyspace_hits" | awk -F':' '{print $2}'`
echo $result
;;
keyspace_misses)
result=`$REDIS_CLI_COMMAND -h $REDIS_HOST -p $REDIS_PORT -a 'password' info | grep -w "keyspace_misses" | awk -F':' '{print $2}'`
echo $result
;;
esac
网友评论