redis 内存不足 排查_Redis连接问题排查与解决

概述

本文主要介绍Redis连接问题的排查与解决。

详细信息

Redis与ECS之间的连接问题

在ECS实例上通过内网地址访问Redis实例,详情请参见redis-cli连接,确保ECS与Redis之间可以相互连接。如果二者无法互访,可能是下列原因引起的。

说明:

如果您需要从本地主机连接云数据库Redis版,请参见外网连接。

建议您使用阿里云内网通过ECS连接Redis实例,提高安全性,降低网络耗时对Redis性能的影响。

如果因条件限制无法实施以下解决方法,您可以重新创建ECS或Redis实例,使二者在同一VPC中。

问题原因

解决方法

Redis实例和ECS实例不在同一账号下。

使用RDB文件将Redis实例迁移到ECS实例所在账号下的同一VPC中,操作方法请参见使用redis-shake迁移RDB文件内的数据。

跨账号连接Redis与ECS实例,操作方法请参见ECS实例跨账号连接云数据库Redis版。

ECS与Redis不在相同地域。

在ECS所在地域中创建新的Redis实例,然后将源Redis实例中的数据迁移到新实例中,操作方法请参见使用redis-shake迁移RDB文件内的数据。

ECS与Redis的网络类型不同。

将Redis实例的网络类型转换为VPC,操作方法请参见切换Redis实例的网络类型。

说明:专有网络不支持更换为经典网络。

快速实现不同网络类型的ECS与Redis实例互访,操作方法请参见快速实现不同网络的ECS与Redis实例互访。

ECS的安全组规则阻塞了对Redis内网地址和端口的访问。

添加安全组规则,使其允许访问,操作方法请参见添加安全组规则。

Redis的白名单中未加入ECS的内网地址。

将ECS的内网IP添加到Redis白名单,操作方法请参见设置IP白名单。

说明:如果出现以下报错,请检查Redis白名单设置,若白名单设置无误且可以在ECS实例上ping通Redis实例,请检查应用中的连接配置。如何通过ping测试Redis实例,请参见使用ping命令检测ECS与Redis之间的连接。

Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: 拒绝连接 (Connection refused)

DNS解析问题。客户端出现类似如下报错:

UnknownHostException

failed to connect: r-***************.redis.rds.aliyuncs.com could not be resolved

使用ping或者telnet命令测试Redis连接地址,查看解析情况,如不成功请检查DNS配置是否正确。

ECS异常行为触发安全策略,导致服务被禁止。如果多台正常连接到Redis的ECS实例中有某个实例出现突发的连接问题。尤其是ECS能ping通Redis实例,但使用telnet命令测试6379端口失败时,可能是该ECS存在异常行为(例如对外攻击)导致服务被禁止。

请检查服务器,在安全组的出方向设置精确的规则,比如限定该ECS只能访问业务需要的地址和端口,此处为Redis实例的6379端口,详情请参见添加安全组规则。若问题还不能解决,请提交工单进行详细排查。

忘记密码

若忘记Redis密码,请在控制台修改密码。

客户端连接

客户端连接方法

使用Jedis、PHP Redis、Python Redis、C/C++、.NET、Nodejs Redis、C#等客户端连接Redis的方法请参见Redis客户端连接。

使用阿里云的数据管理工具DMS连接并管理数据库请参见使用DMS登录Redis。

使用redis-cli连接Redis的方法请参见redis-cli连接。

说明:如果使用各语言的客户端或者redis-cli连接Redis失败,请先排查Redis与ECS实例之间的连接问题。

客户端连接常见问题

带宽超限导致连接受限

每种规格的Redis实例都有相应的带宽限制,详情请参见规格性能。在网络带宽资源充足的情况下,云数据库Redis版的带宽限制不生效,当资源不足时,实例的带宽上限开始生效,此时如果流量过大,则业务请求会受到带宽限制。

如果实例的引擎版本为4.0或以上,详情请参见缓存分析找出大Key进行优化处理。如实例的引擎版本为4.0以下,您可以通过分析实例的内存结构或使用SCAN命令的方式找出大Key进行优化。

升级实例规格,提升带宽。详情请参见变更配置。

转换为同规格的集群版实例,提升带宽。详情请参见变更配置。

转换为同规格的读写分离实例,提升带宽,详情请参见变更配置。同时可以将大Key或者热点Key存储在只读实例中,避免影响其它业务。

性能问题导致连接不畅或失败

使用KEYS、HGETALL等命令影响了Redis性能,导致线程阻塞等情况,进而出现连接问题。

禁止线上环境使用KEYS、FLUSHALL、FLUSHDB等命令。禁用方式请参见禁用高风险命令。

查看监控指标,找出问题原因并采取针对性的办法。

查询慢日志,根据慢日志详情进行优化。您可以在Redis控制台查看慢日志或使用SHOW LOG命令查看,详情请参见查看慢日志。

如果实例的引擎版本为4.0或以上,可以借助LazyFree机制的UNLINK、FLUSHALL ASYNC、FLUSHDB ASYNC命令和相关参数优化业务代码。

如果实例的引擎版本为4.0或以上,请参见缓存分析找出大Key进行优化处理。如果实例的引擎版本为4.0以下,您可以通过分析实例的内存结构或使用SCAN命令的方式找出大Key进行优化。

适用于

云数据库Redis

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值