【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤

refused,服务,应用,步骤 · 浏览次数 : 135

小编点评

## Redis 连接失败的原因和解决方案 **问题描述:** 在 PHP 应用中连接 Redis 时报错,代码如下: ```php // 连接 Redis $client = new Redis\Client(); ``` **错误信息:** ``` RedisException(code: 0): Connection refused at /data/Redis/Connectors/PhpRedisConnector.phpproduction.ERROR: Connection refused {\"exception\":\"[object] (RedisException(code: 0): Connection refused at /data/Redis/Connectors/PhpRedisConnector.php:153)[stacktrace]#0 /data/Redis/Connectors/PhpRedisConnector.php(153): Redis->connect()#1 /data/Redis/Connectors/PhpRedisConnector.php(84): \\\\Redis\\\\Connectors\\\\PhpRedisConnector->establishConnection()#2 /data/Support/helpers.php(263): \\\\Redis\\\\Connectors\\\\PhpRedisConnector->\\\\Redis\\\\Connectors\\\\{closure}()#3 /data/Redis/Connectors/PhpRedisConnector.php(121): tap()#4 /data/Redis/Connectors/PhpRedisConnector.php(28): \\\\Redis\\\\Connectors\\\\PhpRedisConnector->createClient()#5 /data/Redis/Connectors/PhpRedisConnector.php(32): \\\\Redis\\\\Connectors\\\\PhpRedisConnector->\\\\Redis\\\\Connectors\\\\{closure}()#6 /data/Redis/RedisManager.php(112): \\\\Redis\\\\Connectors\\\\PhpRedisConnector->connect()问题解答Redis 中的错误消息“ Connection refused (连接被拒绝)”通常表示 Redis 服务器不接受传入连接。** **解决方案:** 1. **验证 Redis 服务器是否正在运行并接受连接。** - 使用 `redis-cli ping` 命令验证 Redis 服务器是否正常启动并接受连接。 - 确保 Redis 服务器的防火墙设置允许与客户端计算机的连接。 2. **检查是否有任何防火墙限制阻止与 Redis 服务器的连接。** - 尝试暂时禁用防火墙,看看是否能解决问题。 - 确保应用程序中配置的端口与 Redis 服务器设置匹配。 3. **验证 Redis 服务器是否配置为侦听正确的 IP 地址和端口。** - 检查 `redis.conf` 文件中的 `bind` 和 `port` 设置是否正确配置。 4. **检查客户端和 Redis 服务器之间是否存在任何网络连接问题。** - 使用 `ping` 命令尝试从客户端计算机 ping Redis 服务器,查看是否有网络连接问题。 **其他建议:** - 建议仔细分析错误日志中的详细信息,以获得更明确的错误信息。 - 尝试使用不同的 PHP 框架或工具连接 Redis,以确保代码的正确性。 - 如果问题无法解决,可以参考 Redis 官方文档或其他相关资源寻求帮助。

正文

问题描述

在PHP应用中,连接Redis的方法报错  RedisException(code: 0): Connection refused at /data/Redis/Connectors/PhpRedisConnector.php

production.ERROR: Connection refused {"exception":"[object] (RedisException(code: 0): Connection refused at /data/Redis/Connectors/PhpRedisConnector.php:153)
[stacktrace]
#0 /data/Redis/Connectors/PhpRedisConnector.php(153): Redis->connect()
#1 /data/Redis/Connectors/PhpRedisConnector.php(84): \\Redis\\Connectors\\PhpRedisConnector->establishConnection()
#2 /data/Support/helpers.php(263): \\Redis\\Connectors\\PhpRedisConnector->\\Redis\\Connectors\\{closure}()
#3 /data/Redis/Connectors/PhpRedisConnector.php(121): tap()
#4 /data/Redis/Connectors/PhpRedisConnector.php(28): \\Redis\\Connectors\\PhpRedisConnector->createClient()
#5 /data/Redis/Connectors/PhpRedisConnector.php(32): \\Redis\\Connectors\\PhpRedisConnector->\\Redis\\Connectors\\{closure}()
#6 /data/Redis/RedisManager.php(112): \\Redis\\Connectors\\PhpRedisConnector->connect()

问题解答

Redis 中的错误消息“ Connection refused (连接被拒绝)”通常表示 Redis 服务器不接受传入连接。

此错误可能是由多种原因引起的,例如网络连接问题、防火墙限制或 Redis 服务器关闭。

可以尝试以下步骤来排查问题:

1:  验证 Redis 服务器是否正在运行并接受连接。通过运行以下命令来检查 Redis 服务器的状态:“redis-cli ping”。如果 Redis 服务器正在运行,则应返回“PONG”

 

2:  检查是否有任何防火墙限制阻止与 Redis 服务器的连接。可以尝试暂时禁用防火墙,看看它是否能解决问题。Redis 服务端的设置参考:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-network-isolation#azure-firewall-rules

 

3: 验证 Redis 服务器是否配置为侦听正确的 IP 地址和端口。可以检查应用中 Redis 配置文件 (redis.conf) 以确保“绑定”和“端口”设置正确。(如果应用之前正常运行的情况下,可以忽略此点)

 

4: 检查客户端和 Redis 服务器之间是否存在任何网络连接问题。尝试从客户端计算机 ping Redis 服务器,以查看是否存在任何网络连接问题。参考:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-troubleshoot-connectivity#test-connectivity-using-psping

 

 

 

[END]

 

与【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤相似的内容:

【Azure Redis 缓存】应用中出现连接Redis服务错误(production.ERROR: Connection refused)的排查步骤

问题描述 在PHP应用中,连接Redis的方法报错 RedisException(code: 0): Connection refused at /data/Redis/Connectors/PhpRedisConnector.php production.ERROR: Connection ref

【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题

问题描述 在Java应用中,使用 Lettuce 作为客户端SDK与Azure Redis 服务连接,当遇见连接断开后,长达15分钟才会重连。导致应用在长达15分的时间,持续报错Timeout 问题解答 这是 Lettuce 目前的一个未解决的已知问题,可以查看此 github issue来了解这个

【Azure Redis 缓存】Redis 连接失败

问题描述 Azure Redis 出现连接失败,过一会儿后,又能自动恢复。 问题解答 其实,因为Azure Redis服务一直都有升级维护的操作(平均每月一次),Redis服务更新是平台自动进行的计划内的维护升级行为,一般客户端都有重试机制,是不会影响应用。 故障转移发生的情况有: 系统更新,例如

【Azure Redis 缓存】Azure Redis 遇见的连接不上问题和数据丢失的情况解答

问题描述 PHP应用再连接Azure Redis服务时,出现Connection Timed out。当通过升级提高Azure Redis的性能时候,发现之前的数据丢失了。 问题解答 当Redis服务出现Timeout的情况时,可以从Redis服务的指标(Metrics)开始查看,如果出现负载(Se

【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题

问题描述 Azure Cache for Redis 服务在传输和存储数据时是如何加密呢? 问题回答 一:关于Azure cache for Redis服务在数据传输过程中是如何加密的? 为了确保在Azure cache for Redis和客户端应用程序之间传输的数据安全,需要启用TLS加密。Az

【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?

问题描述 在Azure Redis服务中,如何实现只允许Azure App Service访问呢? 问题解答 Azure Redis 开启 防火墙的功能,并在防火墙中添加上App Service的出口IP地址即可。两步即可实现此目的! 1)查询 App Service 的出口IP地址 2)添加第1步

【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?

问题描述 使用6379端口连接Azure Redis服务,连接失败。因为默认情况下Azure Redis的设置没有打开6379的端口。需要使用SSL(6380端口)进行连接,但是遇见了无法连接的问题。 使用非SSL(6379端口)的连接代码

【Azure Redis 缓存】示例使用 redisson-spring-boot-starter 连接/使用 Azure Redis 服务

问题描述 在 Spring Boot 项目中,使用 Redisson 连接 Azure Redis 服务,如下是详细的操作步骤(项目源代码文末可下载) 示例步骤 第一步: 在 Spring Boot 的项目中,添加 redisson-spring-boot-starter 依赖 在项目的pom.xm

【Azure Redis 缓存】使用StackExchange.Redis,偶发ERROR - Timeout performing HSET (15000ms)

问题描述 使用StackExchange.Redis 作为Redis客户端SDK,连接Azure Redis服务,长期运行后发现,每天都偶发 Timeout Error。 错误消息如下: StackExchange.Redis.RedisTimeoutException: Timeout perfo

【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel

问题描述 Redission客户端连接Azure:客户端出现 Unable to send PING command over channel ... ... io.netty.channel.StacklessClosedChannelException: null at io.netty.cha