错误:Redis与redis1.tfs的连接。 tfs:6379失败-在套接字上的RedisClient.on_error(/var/www/a/b/c/node_modules/redis/index.js:196:24)处读取ECONNRESET。
在Socket.emit(events.js:95:17)
在net.js:441:14
在/var/www/a/b/c/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:188:31
在/var/www/a/b/c/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:188:31
在process._tickDomainCallback(node.js:486:13)
在处理中。
对我来说,这听起来像是Node.js外部的网络问题,当与Node.js的远程连接意外关闭套接字时,出现此错误“ ECONNRESET”。
您是否在Node和Redis之间使用代理?
什么版本的Node / node_redis / Redis服务器?
我怀疑是否涉及到NewRelic代理,但是您始终可以在没有代理的情况下尝试重现,看看是否可以解决问题。 cc / @wraithan
这些行只是CLS所做的事情。 通过更多的复制,我可以完全排除New Relic代理。 但是我相对有信心这不是我们造成的。
我删除了NewRelic代理,问题仍然出现。 大约每3分钟就会发生一次崩溃。 以下是参考日志。
events.js:72
投掷者 //未处理的“错误”事件
^
错误:Redis与redis1.tfs的连接。 tfs:6379失败-读取ECONNRESET
在RedisClient.on_error(/var/www/a/b/c/node_modules/redis/index.js:196:24)
在套接字。
在Socket.emit(events.js:95:17)
在net.js:441:14
在process._tickDomainCallback(node.js:486:13)
错误:永远检测到的脚本已退出,代码为:8
错误:脚本重新启动尝试#50
另外,我正在使用Node.JS-v0.10.35,node_redis-0.12.1和Redis-2.8.4。
我正在直接通过Node中的IP访问Redis。
我也遇到了这个问题,但是在昨天意识到由于其他原因我正在玩我的/etc/hosts
文件之后,我才得到解决。 它不见了:
127.0.0.1 localhost
@ ayazpasha2434解决方案可能对您而言并不相同,但是就像其他人暗示的那样,它绝对是在节点外部和env / shell / OS / VM中。 退后一点,凝视它。
@sarathms我的主机文件中有此映射。 但是,在我看来,Redis机器是远程机器。 只是交叉检查,我在Redis机器中也有所说的localhost映射。 问题仍然没有解决。
我也面临着同样的问题。 这是控制台输出
events.js:72
投掷者 //未处理的“错误”事件
^
错误:Redis与pub-redis-10606.us-east-1-1.1.ec2.garantiadata的连接。 com:10606失败-在RedisClient.on_error上读取ECONNRESET(C:UsersGigiDesktopeduknow_api_ver_1authnode_m
odulesredisindex.js:196:24)
在套接字。
在Socket.emit(events.js:95:17)
在net.js:441:14
在process._tickCallback(node.js:442:13)
@ ayazpasha2434这行解决了我的错误
client.on('error',function(err){console.error(err)})
@ ayazpasha2434没有@Waterloo有你正确的答案?
您的网络连接似乎有问题,而节点redis似乎没有问题。 添加错误处理程序就足够了,这样应用程序就不会再崩溃(并且应该始终挂载)。
当我向JAVA服务器发布http(使用发布)时遇到了这个问题。{[错误:读取ECONNRESET]
代码:“ ECONNRESET”,
errno:“ ECONNRESET”,
syscall:“读取”,
响应:未定义}
错误:读取ECONNRESET
在exports._errnoException(util.js:856:11)
在TCP.onread(net.js:546:26)
双回调!
POST / user_archives / create / save 500 45.306 ms-386
错误:读取ECONNRESET
在exports._errnoException(util.js:856:11)
在TCP.onread(net.js:546:26)
@ biggu0我不确定这与node_redis有什么连接。 要了解有关ECONNRESET的更多信息,您可能需要查看stackoverflow 。
嗨,您好 ,
我们也看到了这个问题。 我们观察到这可能是由于redis快照。 每当redis拍摄快照并重置磁盘连接上的存储时。 为了证明自己,我将应用程序日志与redis调试日志进行了比较,并且计时完全匹配。
以下是redis.conf中的快照设置
节省900 1
节省300 10
节省60 10000
如果我们做错了事,请告诉我们。
我也经常遇到连接问题。
RedisClient.emit的ERR(events.js:188:7)
RedisClient.on_error上的ERR(/home/vcap/app/node_modules/redis/index.js:394:14)
RedisClient的ERR。
EmitErrorNT处的ERR(net.js:1281:8)
套接字错误。
process._tickCallback的ERR(内部/进程/next_tick.js:98:9)
ERR错误:Redis与XXXXXXXX:XXXXX的连接失败-读取ECONNRESET
TCP.onread(net.js:572:26)的ERR
_combinedTickCallback的ERR(内部/进程/next_tick.js:74:11)
EmitOne的ERR(events.js:96:13)
出口错误_errnoException(util.js:1022:11)
Socket.emit的ERR(events.js:188:7)
收到错误后,它将自动重新连接。
失去连接可能是什么问题。
嗨,滑铁卢,
您在哪里放置此语句client.on('error',function(err){console.error(err)})
我认为这只是为了安慰您的错误而已。
真的有用吗?
请尽快给我您的想法。
提前致谢!!!
你好
我也面临着同样的问题
events.js:160
投掷者 //未处理的“错误”事件
^
错误:读取ECONNRESET
这解决了我的问题:
我也面临这个问题。 我正在使用带钩子的sails.js框架,因此在启动节点服务时只有一个与Redis服务器的连接,我们将使用全局Sails对象访问和使用Redis
redisClient = redis.createClient({
host: redisConfig.host,
port: redisConfig.port,
db: redisConfig.db,
retry_strategy: (retryOptions) => {
if (retryOptions.error && retryOptions.error.code === 'ECONNREFUSED') {
// End reconnecting on a specific error and flush all commands with
// a individual error
return new Error('The server refused the connection');
}
if (retryOptions.total_retry_time > 1000 * 60 * 60) {
// End reconnecting after a specific timeout and flush all commands
// with a individual error
return new Error('Retry time exhausted');
}
if (retryOptions.attempt > 3) {
// End reconnecting with built in error
return undefined;
}
sails.log.debug('Handling redis retry strategy', {
error: retryOptions.error,
totalRetryTime: retryOptions.total_retry_time,
attempt: retryOptions.attempt
});
// Reconnect after
return Math.min(retryOptions.attempt * 100, 3000);
}
});
这是错误的堆栈跟踪
AbortError:Redis连接丢失,命令中止。 它可能已经处理过.n在RedisClient.flush_and_error(/var/sample-app/node_modules/redis/index.js:362:23)n在RedisClient.connection_gone(/ var / sample-app / node_modules / redis / index。 js:664:14)n在Socket上的RedisClient.on_error(/var/sample-app/node_modules/redis/index.js:410:10)n
我们的节点应用程序在Docker容器上运行,它将连接到安装在EC2 Linux实例上的Redis服务器。
我们也面临着同样的问题,但是在这里,我们使用以下隧道配置将隧道放置为将redis代理到本地主机。
fips =否
pid = /var/run/stunnel.pid
调试= 7
选项= NO_SSLv3
输出= /var/log/stunnel.log
[redis-cli]
客户=是
接受= 127.0.0.1:6379
connect = redi sendpoint:6379
每隔几分钟,节点就会因以下错误而断开连接。 我们通过docker容器运行它们。
Redis与127.0.0.1:6379的连接失败-读取ECONNRESET
在TCP.onStreamRead(internal / stream_base_commons.js:111:27)
错误:Redis与127.0.0.1:6379的连接失败-读取ECONNRESET
在TCP.onStreamRead(internal / stream_base_commons.js:111:27)
错误:Redis与127.0.0.1:6379的连接失败-读取ECONNRESET
在TCP.onStreamRead(internal / stream_base_commons.js:111:27)
AbortError:Redis连接丢失,命令中止。 它可能已被处理。
有什么决议吗?
我们也面临着同样的问题,但是在这里,我们使用以下隧道配置将隧道放置为将redis代理到本地主机。
fips =否
setuid =根
setgid =根
pid = /var/run/stunnel.pid
调试= 7选项= NO_SSLv2
选项= NO_SSLv3
输出= /var/log/stunnel.log客户=否
前景=是
[redis-cli]
客户=是
接受= 127.0.0.1:6379
connect = redi sendpoint:6379每隔几分钟,节点就会因以下错误而断开连接。 我们通过docker容器运行它们。
Redis与127.0.0.1:6379的连接失败-读取ECONNRESET
在TCP.onStreamRead(internal / stream_base_commons.js:111:27)
错误:Redis与127.0.0.1:6379的连接失败-读取ECONNRESET
在TCP.onStreamRead(internal / stream_base_commons.js:111:27)
错误:Redis与127.0.0.1:6379的连接失败-读取ECONNRESET
在TCP.onStreamRead(internal / stream_base_commons.js:111:27)
AbortError:Redis连接丢失,命令中止。 它可能已被处理。有什么决议吗?
对我一样,我认为这是stunnel的问题
我也面临着同样的错误
{ Error: Redis connection to xx.xx.x.x:6379 failed - read ECONNRESET"
at TCP.onStreamRead (internal/stream_base_commons.js:111:27) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read'
我也在使用错误处理程序,但问题是为什么会发生,它会影响我的查询调用并延迟我的请求。
@Ayaz能否请您打开此问题,因为此问题尚未完全解决,人们只处理了错误响应,但问题仍未解决。
颠簸:这里有同样的问题:
error: Error: Redis connection to xx.yy.zz.aa:6379 failed - read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:205:27) {
errno: 'ECONNRESET',
code: 'ECONNRESET',
syscall: 'read'
},
我看到以下问题:
通过使用Google Cloud MemoryStore提供Redis。
日志显示:
[ioredis]未处理的错误事件:错误:读取ECONNRESET
这是每24小时发生一次,没有任何特定原因或相同步骤,只是发生了
@ robertop87
我看到同样的问题。 通过使用Google Cloud MemoryStore提供Redis。 您解决了这个问题吗?
连接到Cloud Memory Store时,还会看到与Cloud run / Cloud Functions非常相似的问题。 当Google随机停止基本资源时,可能会发生这种情况。
对于我们而言,此问题才刚刚开始一周左右,而我们处理Redis连接的方式没有任何变化。 我们还使用ioredis处理连接并运行节点12。
IORedis作为默认策略会在发生错误时重新连接,但是由于某种原因它没有发生。
我所做的是在配置中添加下一个:
reconnectOnError: (error): boolean => {
console.log('Always reconnect on error', error)
return true
}
ECONNRESET错误仍然存在,但现在可以重试我的连接,并且我的Google实例不再被卡住了。
抄送: @ hkd987
在此处阅读有关reconnectOnError
更多详细信息: https :
@ robertop87进行新部署,并将特定配置始终设置为将reconnectOnError
设置为返回true。 这似乎是需要重新打开或制作新票证的问题,因为这种情况发生在最新版本中。
最有用的评论
@ ayazpasha2434这行解决了我的错误
client.on('error',function(err){console.error(err)})