redis-cli -h {ip} -p {port} --bigkeys命令可找出当前最大对象出来,接着便可对大对象进行调整或缩减或分成多个小对象

redis指定库查询 redis 查询_客户端

可使用info commandstats命令分析命令不合理的开销时间,会返回最近执行命令的调用次数、耗时等信息

执行slowlog get n 命令可以获取最近的n条慢查询命令 

redis指定库查询 redis 查询_redis指定库查询_02

slowlog 是 Redis 用来记录查询执行时间的日志系统。注意,这个查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间

使用 SLOWLOG LEN 命令,查询当前的慢查询日志记录数

redis-cli  client list 查看客户端链接请求

redis指定库查询 redis 查询_redis_03

上面的idle 数据比较大的说明 闲置时间较长 

其中idle(以秒计算的空闲时长)竟然这么长时间。。很多空闲连接都没有被及时释放掉从而导致connected_clients非常高

redis-cli xxxx get timeout  查看设置的闲置时长 

查看redis的配置timeout (当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能)

redis指定库查询 redis 查询_redis_04

可以修改配置文件 或则 set timeout xxx 秒级 

然后在查看下 client 链接数是否已经减少

3.1 连接拒绝
当出现网络闪断或者连接数溢出时,客户端会出现无法连接Redis的情况。我们需要区分这三种情况:网络闪断、Redis连接拒绝、连接溢出。
第一种情况:网络闪断
一般发生在网络割接或者带宽耗尽的情况,对于网络闪断的识别比较困难,常见的做法可以通过sar-n DEV查看本机历史流量是否正常,或者借助外部系统监控工具(如Ganglia)进行识别。具体问题定位需要更上层的运维支持,对于重要的Redis服务需要充分考虑部署架构的优化,尽量避免客户端与Redis之间异地跨机房调用。
第二种情况:Redis连接拒绝
Redis通过maxclients参数控制客户端最大连接数,默认10000。当Redis连接数大于maxclients时会拒绝新的连接进入,info statsrejected_connections统计指标记录所有被拒绝连接的数量:

# redis-cli -p 6384 info Stats | grep rejected_connections
rejected_connections:0

第三种情况:连接溢出
这是指操作系统或者Redis客户端在连接时的问题。这个问题的原因比较多,下面就分别介绍两种原因:进程限制、backlog队列溢出。

通过 查看redis服务运行状况:redis-cli -h {host} -p {port} --stat

redis指定库查询 redis 查询_redis指定库查询_05

keys:当前key总数;mem:内存使用;clients:当前连接client数;blocked:阻塞数;requests:累计请求数(后面是并发量);connections:累计连接数 

上面展示的堵塞数为1 ,那么如何定位到该堵塞的链接请求?