云数据库Redis

Redis连接问题排查与解决

详细信息

当您发现与Redis的连接出现异常时,可以根据本文的内容,从如下几个方面进行排查。

• Redis与ECS之间的连接问题

• 从外网连接Redis

• 忘记密码

• 带宽超限导致连接受限

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

Redis与ECS之间的连接问题

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

• Redis实例和ECS实例不在同一账号下,解决方法使用RDB文件将Redis实例迁移到ECS实例所在账号下的同一VPC中。

• ECS与Redis不在相同地域,解决方法如下所示。

在ECS所在地域创建新的Redis实例,将源实例中的数据迁移到新实例中.

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

添加安全组规则,使其允许访问.

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

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

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

忘记密码

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

带宽超限导致连接受限

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

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

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

  1. 禁止线上环境使用KEYS、FLUSHALL、FLUSHDB等命令。禁用方式请参见禁用高风险命令。
  2. 查看监控指标,找出问题原因并采取针对性的办法。
  3. 可以借助LazyFree机制的UNLINK、FLUSHALL ASYNC、FLUSHDB ASYNC命令和相关参数优化业务代码。
  4. 优化热点Key。