服务器抛出错误可能是站点流量大或 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 种情况下,我通过以下方式解决了这个问题:
- 重新加载我的 .env:清除缓存:
php artisan config:cache
并将 env 文件重新加载到缓存中:php artisan config:clear
我的 Docker - 服务实际上在我的一个 Docker Swarm 节点(在本例中是工作线程(上关闭,因此重新启动我的节点/服务器重新启动了 Docker,它重新启动了我的 PHP-FPM 容器,该容器"损坏"并且不再与管理器节点上的 Redis 容器通信