Redis 连接在 5 分钟后使用 docker-compose 关闭
Redis connection closed after 5 minutes using docker-compose
我有一个简单的 Node.js 应用程序,我在本地使用 docker-compose 到 运行。它包括使用官方 Redis Docker image(5.0 版)的 Redis 服务。
我的 Node.js 应用程序使用的是官方 Node image(版本 14.17.5)。
我的自定义 Node.js 应用程序使用 Node Redis(版本 4.0.1)连接到 Redis 服务。 Node Redis 客户端是基于事件的,在第 5 分钟标记处发布“结束”事件,表示连接已关闭。我希望保持连接。
连接在我们使用 Kubernetes 的暂存环境中永久保持活动状态,因此我认为这不是 Node.js 代码的问题。我怀疑他们是我的 docker-compose.yml.
的问题
我尝试将我的 Redis 应用程序的 Redis tcp-keepalive 设置从 300 降低到 200(秒)但这并没有解决我的问题。
我找到了适合我的解决方案。
在 docker-compose.yml 中,我将以下配置添加到我的 Node.js 服务中:
services:
app:
sysctls:
- net.ipv4.tcp_keepalive_time=200
看起来 OS TCP 连接超时。
我有一个简单的 Node.js 应用程序,我在本地使用 docker-compose 到 运行。它包括使用官方 Redis Docker image(5.0 版)的 Redis 服务。
我的 Node.js 应用程序使用的是官方 Node image(版本 14.17.5)。
我的自定义 Node.js 应用程序使用 Node Redis(版本 4.0.1)连接到 Redis 服务。 Node Redis 客户端是基于事件的,在第 5 分钟标记处发布“结束”事件,表示连接已关闭。我希望保持连接。
连接在我们使用 Kubernetes 的暂存环境中永久保持活动状态,因此我认为这不是 Node.js 代码的问题。我怀疑他们是我的 docker-compose.yml.
的问题我尝试将我的 Redis 应用程序的 Redis tcp-keepalive 设置从 300 降低到 200(秒)但这并没有解决我的问题。
我找到了适合我的解决方案。
在 docker-compose.yml 中,我将以下配置添加到我的 Node.js 服务中:
services:
app:
sysctls:
- net.ipv4.tcp_keepalive_time=200
看起来 OS TCP 连接超时。