Erro: conexão do Redis com redis1.tfs. tfs: 6379 falhou - leia ECONNRESET em RedisClient.on_error (/var/www/a/b/c/node_modules/redis/index.js:196:24) em Socket.
em Socket.emit (events.js: 95: 17)
em net.js: 441: 14
em /var/www/a/b/c/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:188:31
em /var/www/a/b/c/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:188:31
em process._tickDomainCallback (node.js: 486: 13)
no processo.
Para mim, isso soa como um problema de rede fora do Node.js, esse erro "ECONNRESET" ocorre quando a conexão remota com o Node.js fecha o soquete inesperadamente.
Você está usando um proxy entre o Node e o Redis?
Qual versão do servidor Node / node_redis / Redis?
Duvido que o agente NewRelic esteja envolvido, mas você sempre pode tentar reproduzir sem o agente e ver se isso corrige o problema. cc / @wraithan
Essas linhas são apenas CLS fazendo isso. Com mais uma reprodução, eu poderia descartar totalmente o agente da New Relic. Mas estou relativamente confiante de que isso não foi causado por nós.
Removi o agente NewRelic, o problema ainda ocorre. Aproximadamente. a cada 3 minutos eu vejo esse acidente acontecendo. Abaixo estão os logs para referência.
events.js: 72
jogue er; // Evento de 'erro' não tratado
^
Erro: conexão do Redis com redis1.tfs. tfs: 6379 falhou - leia ECONNRESET
em RedisClient.on_error (/var/www/a/b/c/node_modules/redis/index.js:196:24)
em Socket.
em Socket.emit (events.js: 95: 17)
em net.js: 441: 14
em process._tickDomainCallback (node.js: 486: 13)
erro: Script para sempre detectado saiu com código: 8
erro: tentativa de reinicialização do script # 50
Além disso, estou usando Node.JS - v0.10.35, node_redis - 0.12.1 e Redis - 2.8.4.
Estou acessando o Redis diretamente via IP no Node.
Eu também estava enfrentando esse problema, mas só foi resolvido depois que percebi que estava brincando com meu arquivo /etc/hosts
ontem por algum outro motivo. Estava faltando:
127.0.0.1 localhost
@ ayazpasha2434 a solução pode não ser a mesma para você, mas como os outros estão sugerindo, é definitivamente fora do nó e no env / shell / OS / VM. Dê um passo para trás e olhe para ele.
@sarathms Eu tenho esse mapeamento em meu arquivo hosts. No entanto, a máquina Redis no meu caso é remota. Apenas checado, eu tenho o referido mapeamento de host local na máquina Redis também. Ainda assim, o problema não foi resolvido.
Eu também estou enfrentando o mesmo problema . Aqui está a saída do console
events.js: 72
jogue er; // Evento de 'erro' não tratado
^
Erro: conexão do Redis com pub-redis-10606.us-east-1-1.1.ec2.garantiadata. com: 10606 falhou - leia ECONNRESET em RedisClient.on_error (C: UsersGigiDesktopeduknow_api_ver_1authnode_m
odulesredisindex.js: 196: 24)
em Socket.
em Socket.emit (events.js: 95: 17)
em net.js: 441: 14
em process._tickCallback (node.js: 442: 13)
@ ayazpasha2434 Esta linha resolveu meu erro
client.on ('erro', função (err) {console.error (err)})
@ ayazpasha2434 @Waterloo tem a resposta certa para você?
Parecia haver um problema com sua conexão de rede e não parece ser um problema com o nó redis. Adicionar o manipulador de erros deve ser suficiente para que o aplicativo não trave mais (e deve estar sempre anexado).
Eu encontrei esse problema quando postei um http (usar postagem) no servidor JAVA. {[Erro: leia ECONNRESET]
código: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'ler',
resposta: indefinido}
Erro: leia ECONNRESET
em exportações._errnoException (util.js: 856: 11)
em TCP.onread (net.js: 546: 26)
retorno de chamada duplo!
POST / user_archives / criar / salvar 500 45,306 ms - 386
Erro: leia ECONNRESET
em exportações._errnoException (util.js: 856: 11)
em TCP.onread (net.js: 546: 26)
@ biggu0 Não tenho certeza de que conexão isso tem com node_redis. Para saber mais sobre ECONNRESET, você pode querer dar uma olhada em stackoverflow .
Olá ,
Também estamos vendo esse problema. Observamos que pode ser por causa do SNAPSHOTTING do redis. Sempre que o redis está tirando instantâneo e armazenando no disco, a conexão é redefinida. Para provar a mim mesmo, comparo os logs do aplicativo com os logs de depuração do Redis e os tempos são exatamente iguais.
abaixo estão as configurações de instantâneo em redis.conf
economize 900 1
economize 300 10
economize 60 10.000
Informe-nos se estivermos fazendo algo errado.
Também estou enfrentando problemas de conexão com freqüência.
ERR em RedisClient.emit (events.js: 188: 7)
ERR em RedisClient.on_error (/home/vcap/app/node_modules/redis/index.js:394:14)
ERR no RedisClient.
ERR em emitErrorNT (net.js: 1281: 8)
ERR no soquete.
ERR em process._tickCallback (internal / process / next_tick.js: 98: 9)
ERR Error: Redis connection to XXXXXXXX: XXXXX falhou - leia ECONNRESET
ERR em TCP.onread (net.js: 572: 26)
ERR em _combinedTickCallback (internal / process / next_tick.js: 74: 11)
ERR em emitOne (events.js: 96: 13)
ERR nas exportações._errnoException (util.js: 1022: 11)
ERR em Socket.emit (events.js: 188: 7)
Depois de obter o erro, ele se reconecta automaticamente.
Qual pode ser o problema para perder a conexão.
Oi Waterloo,
Onde você coloca esta instrução client.on ('error', function (err) {console.error (err)})
e acho que esta declaração apenas para consolar seu erro nada mais.
é realmente utilizável?
Por favor, dê-me seus pensamentos o mais rápido possível.
Desde já, obrigado!!!
Olá
Eu também estou enfrentando o mesmo problema
events.js: 160
jogue er; // Evento de 'erro' não tratado
^
Erro: leia ECONNRESET
Isso resolveu meu problema com:
Eu também estou enfrentando esse problema. Estou usando o framework sails.js com um gancho, então há apenas uma conexão com o servidor redis ao iniciar o serviço de nó, usaremos o objeto velas globais para acessar e trabalhar com 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);
}
});
Aqui está o rastreamento da pilha do erro
AbortError: Conexão do Redis perdida e comando abortado. Pode ter sido processado.n em RedisClient.flush_and_error (/var/sample-app/node_modules/redis/index.js:362:23) n em RedisClient.connection_gone (/ var / sample-app / node_modules / redis / index. js: 664: 14) n em RedisClient.on_error (/var/sample-app/node_modules/redis/index.js:410:10)n em Socket.
Nosso aplicativo de nó está sendo executado em um contêiner Docker e se conectará ao servidor Redis instalado em uma instância Linux EC2.
Também enfrentamos o mesmo problema, mas aqui colocamos o stunnel para fazer o proxy do redis para o localhost usando a configuração do stunnel abaixo.
fips = não
pid = /var/run/stunnel.pid
debug = 7
options = NO_SSLv3
output = /var/log/stunnel.log
[redis-cli]
cliente = sim
aceitar = 127.0.0.1:6379
conectar = redi ponto de envio: 6379
o nó está se desconectando com os erros abaixo a cada dois minutos. Estamos executando isso através de contêineres docker.
Falha na conexão do Redis com 127.0.0.1:6379 - leia ECONNRESET
em TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Erro: falha na conexão do Redis com 127.0.0.1:6379 - leia ECONNRESET
em TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Erro: falha na conexão do Redis com 127.0.0.1:6379 - leia ECONNRESET
em TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
AbortError: Conexão do Redis perdida e comando abortado. Pode ter sido processado.
qualquer resolução?
Também enfrentamos o mesmo problema, mas aqui colocamos o stunnel para fazer o proxy do redis para o localhost usando a configuração do stunnel abaixo.
fips = não
setuid = root
setgid = root
pid = /var/run/stunnel.pid
debug = 7options = NO_SSLv2
options = NO_SSLv3
output = /var/log/stunnel.logcliente = não
primeiro plano = sim
[redis-cli]
cliente = sim
aceitar = 127.0.0.1:6379
conectar = redi ponto de envio: 6379o nó está se desconectando com os erros abaixo a cada dois minutos. Estamos executando isso através de contêineres docker.
Falha na conexão do Redis com 127.0.0.1:6379 - leia ECONNRESET
em TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Erro: falha na conexão do Redis com 127.0.0.1:6379 - leia ECONNRESET
em TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Erro: falha na conexão do Redis com 127.0.0.1:6379 - leia ECONNRESET
em TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
AbortError: Conexão do Redis perdida e comando abortado. Pode ter sido processado.qualquer resolução?
o mesmo para mim, eu acho que este é um problema com o stunnel
Eu também estou enfrentando o mesmo erro
{ 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'
Também estou usando o manipulador de erros, mas o motivo disso é porque isso pode afetar minhas chamadas de consulta e atrasar minhas solicitações.
@Ayaz Pode abrir este problema porque este problema não foi completamente resolvido, as pessoas apenas trataram da resposta de erro, mas o problema ainda não foi resolvido.
Batendo: mesmo problema aqui:
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'
},
Vejo o mesmo problema com:
O Redis é fornecido usando o Google Cloud MemoryStore.
Os registros mostram:
[ioredis] Evento de erro não tratado: Erro: leia ECONNRESET
Isso está acontecendo uma vez a cada 24 horas, sem nenhum motivo específico ou as mesmas etapas, simplesmente acontece
@ robertop87
Eu vejo o mesmo problema. O Redis é fornecido usando o Google Cloud MemoryStore. Você resolveu esse problema?
Também observamos um problema muito semelhante com Cloud run / Cloud Functions ao se conectar ao Cloud Memory Store. Possivelmente, pode estar acontecendo quando os recursos subjacentes são interrompidos muito cedo de forma aleatória pelo Google.
Esse problema começou há cerca de uma semana para nós, sem alterações em como estamos lidando com a conexão do Redis. Também estamos usando ioredis para lidar com a conexão e executar o nó 12.
IORedis tem como estratégia padrão reconectar em caso de erro, mas por algum motivo isso não está acontecendo.
O que fiz foi adicionar o próximo na configuração:
reconnectOnError: (error): boolean => {
console.log('Always reconnect on error', error)
return true
}
O erro ECONNRESET ainda está presente, mas agora minha conexão foi tentada novamente e minha instância do Google não está mais travada.
CC: @ hkd987
Leia mais detalhes sobre reconnectOnError
aqui: https://github.com/luin/ioredis
@ robertop87 Fez uma nova implantação com a configuração específica para sempre reconnectOnError
definida para retornar verdadeiro. Este parece ser um problema que precisa ser reaberto ou um novo tíquete feito, já que isso está acontecendo na versão mais recente.
Comentários muito úteis
@ ayazpasha2434 Esta linha resolveu meu erro
client.on ('erro', função (err) {console.error (err)})