gpt4 book ai didi

javascript - 连接一段时间后 Redis ETIMEDOUT 错误

转载 作者:IT王子 更新时间:2023-10-29 06:16:17 27 4
gpt4 key购买 nike

概述

在两个单独的 Azure 实例上,第一个实例上的 Node.js 服务器正在运行,它们连接到第二个实例上运行的单 Node Redis 服务器,并且 Node.js 正在尝试与 Redis 保持事件连接。 Node Redis 模块用于在 redis 中存储和检索数据,socket.io-emitter 模块用于允许不同的服务器基于客户端的集体连接发送消息。

问题

初始连接完成后(偶尔),连接会卡住并最终崩溃,所有服务器都会抛出 ETIMEDOUT 错误。

我尝试过什么。

我。首先添加了socket_keepalive,然后与socket_initialdelay一起添加

const redis = require('redis');
let options = {socket_keepalive : true, socket_initialdelay : 200000};
global.client = redis.createClient(port, host, options);
ii.使用 socket.io-emitter 模块尝试使用 Node redis 模块本身使用新的 redis 对象初始化它,但通知在之后停止工作,因此退回到同一事物。

这会停止向各个设备发送通知

let options = {socket_keepalive : true, socket_initialdelay : 200000};
let redis_socket = require('redis');
let pub = redis_socket.createClient(port, host, options);
let ioz = require('socket.io-emitter')(pub);

*显然工作方法存在超时问题。

三.在redis的服务器上,超时配置设置为0,tcpdelay为300秒,但我们尝试将其更改为0(tcpdelay),但问题仍然存在。

这绝对让我伤透了脑筋,因为同一段代码在另一个环境中工作,但造成这种情况的原因仍然是一个谜,经过更多调查后,我意识到连接的客户端(可通过监视器命令使用)在一段时间后就会下降,因此抛出 etimedout 错误。

同一台 Redis 机器也用于缓存,并且运行没有任何问题。

最佳答案

看起来您可能会点击 TCP idle timeout of 4 minutes .

根据self-documented config for Redis 3.2tcp-keepalive 的值必须非零才能工作。因此,您可能需要设置一个值,例如 120 (240/2),然后重试。

关于javascript - 连接一段时间后 Redis ETIMEDOUT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56964359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com