Laravel Redis php_network_getaddresses:getaddrinfo 失败:名称或服务未



服务器抛出错误可能是站点流量大或 Redis 连接丢失。 但是无法找到可以帮助解决此错误的原因。

此外,由于以下错误,服务器在每天凌晨 4 点左右的特定英国时间停止。

因此,有关此的任何帮助都将有所帮助。

Server : Digital Ocean
Frontend : React JS
Backend : laravel (5.8)
Used spiritix/lada-cache library for mysql cashing to manage large amount of data.
Application is running on Docker containers.

1( 错误:

生产。错误: php_network_getaddresses: getaddrinfo 失败: 名称 或服务未知 [tcp://redis:6379] {"异常":"[对象] (Predis\Connection\ConnectionException(code: 0(: php_network_getaddresses:getaddrinfo 失败:名称或服务未 已知 [tcp://redis:6379] 在/var/www/vendor/predis/predis/src/Connection/AbstractConnection.php:155(

2(错误:-

Redis - 正在加载 Redis 正在将数据集加载到内存中:

3(错误:-

生产。错误:连接被拒绝 [tcp://127.0.0.1:6379]

此错误也会停止服务器。

我试图在 cron 调度程序上重新启动 docker 关闭容器。但实际问题不在于 docker 容器,一些内部 laravel 包,如 Predis |Ladacash抛出上述错误,因为无法找到确切的解决方案。

由于您使用的是 docker,因此您不再需要使用 IP(例如 127.0.0.1(引用您的 redis 服务器(docker 容器(。请改用容器名称。

1( 运行:docker ps列出所有容器,然后找到 redis 服务器,将container name列下的名称复制并粘贴到您的.env文件中作为主机。

2( 确保您的应用容器和 Redis 容器位于同一网络中:

docker network ls
docker network inspect <network_name>

有点无关紧要,因为它可能是导致此问题的很多原因,但在我的 2 种情况下,我通过以下方式解决了这个问题:

  1. 重新加载我的 .env:清除缓存:php artisan config:cache并将 env 文件重新加载到缓存中:php artisan config:clear
  2. 我的 Docker
  3. 服务实际上在我的一个 Docker Swarm 节点(在本例中是工作线程(上关闭,因此重新启动我的节点/服务器重新启动了 Docker,它重新启动了我的 PHP-FPM 容器,该容器"损坏"并且不再与管理器节点上的 Redis 容器通信

最新更新