Node-redis: Baca ECONNRESET setiap 3 menit - Server NodeJS mogok karena ini. Menggunakan plugin newrelic untuk pemantauan server.

Dibuat pada 9 Feb 2015  ·  26Komentar  ·  Sumber: NodeRedis/node-redis

Error: Redis koneksi ke redis1.tfs. tfs: 6379 gagal - baca ECONNRESET di RedisClient.on_error (/var/www/a/b/c/node_modules/redis/index.js:196:24) di Socket.(/var/www/a/b/c/node_modules/redis/index.js:106:14)
di Socket.emit (events.js: 95: 17)
di net.js: 441: 14
di /var/www/a/b/c/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:188:31
di /var/www/a/b/c/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:188:31
di process._tickDomainCallback (node.js: 486: 13)
dalam proses.(/var/www/a/b/c/node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/index.js:18:15)

question

Komentar yang paling membantu

@ ayapasha2434 Baris ini menyelesaikan kesalahan saya

client.on ('error', function (err) {console.error (err)})

Semua 26 komentar

Bagi saya, ini terdengar seperti masalah jaringan di luar Node.js, kesalahan "ECONNRESET" ini adalah ketika koneksi jarak jauh ke Node.js menutup soket secara tidak terduga.

Apakah Anda menggunakan proxy antara Node dan Redis?

Versi berapa dari server Node / node_redis / Redis?

Saya ragu agen NewRelic terlibat, tetapi Anda selalu dapat mencoba mereproduksi tanpa agen dan melihat apakah itu menyelesaikan masalah. cc / @wraithan

Garis-garis itu hanyalah CLS yang melakukan itu. Dengan lebih banyak repro saya bisa sepenuhnya mengesampingkan agen New Relic. Tapi saya relatif yakin ini tidak disebabkan oleh kami.

Saya menghapus agen NewRelic, masalah masih terjadi. Approx. setiap 3 menit saya mendapatkan kecelakaan ini terjadi. Di bawah ini adalah log untuk referensi.

events.js: 72
melempar er; // Acara 'error' yang tidak tertangani
^
Error: Redis koneksi ke redis1.tfs. tfs: 6379 gagal - baca ECONNRESET
di RedisClient.on_error (/var/www/a/b/c/node_modules/redis/index.js:196:24)
di Socket.(/var/www/a/b/c/node_modules/redis/index.js:106:14)
di Socket.emit (events.js: 95: 17)
di net.js: 441: 14
di process._tickDomainCallback (node.js: 486: 13)
error: Selamanya terdeteksi skrip keluar dengan kode: 8
kesalahan: Skrip memulai ulang percobaan # 50

Juga, saya menggunakan Node.JS - v0.10.35, node_redis - 0.12.1 & Redis - 2.8.4.
Saya mengakses Redis secara langsung melalui IP di Node.

Saya menghadapi masalah ini juga, tetapi baru terselesaikan setelah saya menyadari bahwa saya bermain-main dengan file /etc/hosts kemarin karena beberapa alasan lain. Itu hilang:

127.0.0.1 localhost

@ ayazpasha2434 solusinya mungkin tidak sama untuk Anda, tetapi seperti orang lain yang mengisyaratkan, itu pasti di luar node dan di env / shell / OS / VM. Mundur sedikit dan tataplah.

@ Sarathms Saya memiliki pemetaan ini di file host saya. Namun, mesin Redis dalam kasus saya adalah mesin jarak jauh. Baru saja diperiksa silang, saya juga memiliki pemetaan localhost tersebut di mesin Redis. Masalahnya masih belum terpecahkan.

Saya juga menghadapi masalah yang sama . Berikut adalah Output Konsol

events.js: 72
melempar er; // Acara 'error' yang tidak tertangani
^
Kesalahan: Redis koneksi ke pub-redis-10606.us-east-1-1.1.ec2.garantiadata. com: 10606 gagal - baca ECONNRESET di RedisClient.on_error (C: UsersGigiDesktopeduknow_api_ver_1authnode_m
odulesredisindex.js: 196: 24)
di Socket.(C: UsersGigiDesktopeduknow_api_ver_1authnode_modulesredisindex.js: 106: 14)
di Socket.emit (events.js: 95: 17)
di net.js: 441: 14
di process._tickCallback (node.js: 442: 13)

@ ayapasha2434 Baris ini menyelesaikan kesalahan saya

client.on ('error', function (err) {console.error (err)})

@ ayazpasha2434 Apakah @Waterloo punya jawaban yang tepat untuk Anda?

Sepertinya ada masalah dengan koneksi jaringan Anda dan sepertinya bukan masalah dengan redis node. Menambahkan penangan kesalahan seharusnya cukup sehingga aplikasi tidak mogok lagi (dan harus selalu dipasang).

Saya menemui masalah ini ketika saya memposting http (gunakan posting) ke server JAVA. {[Error: read ECONNRESET]
kode: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
respon: undefined}
Kesalahan: baca ECONNRESET
di exports._errnoException (util.js: 856: 11)
di TCP.onread (net.js: 546: 26)
panggilan balik ganda!
POST / user_archives / buat / simpan 500 45,306 ms - 386
Kesalahan: baca ECONNRESET
di exports._errnoException (util.js: 856: 11)
di TCP.onread (net.js: 546: 26)

@ biggu0 Saya tidak yakin apa hubungannya ini dengan node_redis. Untuk mengetahui lebih lanjut tentang ECONNRESET Anda mungkin ingin melihat stackoverflow .

Halo,
Kami juga melihat masalah ini. Kami mengamati bahwa itu bisa jadi karena redis SNAPSHOTTING. Setiap kali redis mengambil snapshot dan menyimpan di koneksi disk sedang disetel ulang. Untuk membuktikan diri, saya membandingkan log aplikasi dengan log debug redis dan waktunya sama persis.

di bawah ini adalah pengaturan snapshot di redis.conf
hemat 900 1
hemat 300 10
hemat 60 10000

Beri tahu kami jika kami melakukan kesalahan.

Saya juga sering menghadapi masalah koneksi.

ERR di RedisClient.emit (events.js: 188: 7)
ERR di RedisClient.on_error (/home/vcap/app/node_modules/redis/index.js:394:14)
ERR di RedisClient.(/home/vcap/app/server.js:28:13)
ERR di emitErrorNT (net.js: 1281: 8)
ERR di Socket.(/home/vcap/app/node_modules/redis/index.js:272:14)
ERR di process._tickCallback (internal / proses / next_tick.js: 98: 9)
ERR Error: Redis koneksi ke XXXXXXXX: XXXXX gagal - baca ECONNRESET
ERR di TCP.onread (net.js: 572: 26)
ERR di _combinedTickCallback (internal / proses / next_tick.js: 74: 11)
ERR di emitOne (events.js: 96: 13)
ERR di exports._errnoException (util.js: 1022: 11)
ERR di Socket.emit (events.js: 188: 7)

Setelah mendapatkan kesalahan itu secara otomatis menghubungkan kembali.
Apa yang bisa menjadi masalah kehilangan koneksi.

Hai Waterloo,
Di mana Anda meletakkan pernyataan ini client.on ('error', function (err) {console.error (err)})
dan saya pikir pernyataan ini hanya untuk konsol kesalahan Anda tidak ada yang lain.
apakah itu benar-benar bisa digunakan?
Tolong beri saya pikiran Anda secepatnya.

Terima kasih sebelumnya!!!

Halo

Saya juga menghadapi masalah yang sama

events.js: 160
melempar er; // Acara 'error' yang tidak tertangani
^

Kesalahan: baca ECONNRESET

Ini memecahkan masalah saya dengan:

  1. Saya menonaktifkan semua pemantauan proses saya (relik baru, apm elastis ...)
  2. Saya menggunakan kode ini
    `` `` Javascript
    process.on ('uncaughtException', function (err) {
    console.error (err.stack);
    console.log ("Node TIDAK Keluar ...");
    });

Saya ma juga menghadapi masalah ini. Saya menggunakan framework sails.js dengan hook, jadi hanya ada satu koneksi ke server redis saat memulai layanan node, kami akan menggunakan objek layar global untuk mengakses dan bekerja dengan 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);
    }
});

Berikut adalah jejak tumpukan kesalahan tersebut
AbortError: Redis koneksi hilang dan perintah dibatalkan. Ini mungkin telah diproses.n di RedisClient.flush_and_error (/var/sample-app/node_modules/redis/index.js:362:23)n di RedisClient.connection_gone (/ var / sample-app / node_modules / redis / index. js: 664: 14) n di RedisClient.on_error (/var/sample-app/node_modules/redis/index.js:410:10)n di Socket.(/var/sample-app/node_modules/redis/index.js:279:14)n di emitOne (events.js: 116: 13) n di Socket.emit (events.js: 211: 7) n di emitErrorNT ( internal / streams / destroy.js: 66: 8) n di /var/sample-app/node_modules/async-listener/glue.js:188:31n di args. (fungsi anonim) (/ usr / lib / node_modules / pm2 /node_modules/event-loop-inspector/index.js:138:29)n di _combinedTickCallback (internal / process / next_tick.js: 139: 11) n di process._tickDomainCallback (internal / process / next_tick.js: 219: 9 ) n di process.fallback (/var/sample-app/node_modules/async-listener/index.js:563:15).

Aplikasi node kami berjalan di container Docker dan akan terhubung ke server Redis yang diinstal pada instance linux EC2.

Kami juga menghadapi masalah yang sama, tetapi di sini kami menempatkan stunnel untuk mem-proxy redis ke localhost menggunakan konfigurasi stunnel di bawah ini.

fips = tidak

setuid = root

setgid = root

pid = /var/run/stunnel.pid
debug = 7

options = NO_SSLv2

options = NO_SSLv3
keluaran = /var/log/stunnel.log

klien = tidak

latar depan = ya

[redis-cli]
klien = ya
terima = 127.0.0.1:6379
terhubung = redi sendpoint: 6379

node terputus dengan kesalahan di bawah ini untuk setiap beberapa menit. Kami menjalankannya melalui kontainer buruh pelabuhan.

Redis koneksi ke 127.0.0.1:6379 gagal - baca ECONNRESET
di TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Kesalahan: Redis koneksi ke 127.0.0.1:6379 gagal - baca ECONNRESET
di TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Kesalahan: Redis koneksi ke 127.0.0.1:6379 gagal - baca ECONNRESET
di TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
AbortError: Redis koneksi hilang dan perintah dibatalkan. Mungkin sudah diproses.

ada resolusi?

Kami juga menghadapi masalah yang sama, tetapi di sini kami menempatkan stunnel untuk mem-proxy redis ke localhost menggunakan konfigurasi stunnel di bawah ini.

fips = tidak

setuid = root

setgid = root

pid = /var/run/stunnel.pid
debug = 7

options = NO_SSLv2

options = NO_SSLv3
keluaran = /var/log/stunnel.log

klien = tidak

latar depan = ya

[redis-cli]
klien = ya
terima = 127.0.0.1:6379
terhubung = redi sendpoint: 6379

node terputus dengan kesalahan di bawah ini untuk setiap beberapa menit. Kami menjalankannya melalui kontainer buruh pelabuhan.

Redis koneksi ke 127.0.0.1:6379 gagal - baca ECONNRESET
di TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Kesalahan: Redis koneksi ke 127.0.0.1:6379 gagal - baca ECONNRESET
di TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
Kesalahan: Redis koneksi ke 127.0.0.1:6379 gagal - baca ECONNRESET
di TCP.onStreamRead (internal / stream_base_commons.js: 111: 27)
AbortError: Redis koneksi hilang dan perintah dibatalkan. Mungkin sudah diproses.

ada resolusi?

sama dengan saya, saya pikir ini adalah masalah dengan stunnel

Saya juga menghadapi kesalahan yang sama

{ 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' 

Saya juga menggunakan penangan kesalahan tetapi masalahnya mengapa ini terjadi, itu dapat memengaruhi panggilan kueri saya dan menunda permintaan saya.

@Ayaz Bisakah Anda membuka masalah ini karena masalah ini belum sepenuhnya terselesaikan. Orang-orang hanya menangani respons kesalahan tetapi masalahnya masih belum terselesaikan.

Bumping: Masalah yang sama di sini:

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' },

Saya melihat hal yang sama dalam masalah dengan:

  • NodeJS v12.16.3
  • Kerangka NestJS
  • IOredis: 4.2
  • nestjs-redis: 1.2.8

Redis disediakan dengan menggunakan Google Cloud MemoryStore.

Log menunjukkan:

[ioredis] Acara kesalahan tidak tertangani: Kesalahan: baca ECONNRESET

Ini terjadi sekitar satu kali setiap 24 jam tanpa alasan khusus atau langkah yang sama, itu terjadi begitu saja

@rachmadsyahrul
Saya melihat masalah yang sama. Redis disediakan dengan menggunakan Google Cloud MemoryStore. Apakah Anda menyelesaikan masalah ini?

Juga melihat masalah yang sangat mirip dengan Cloud run / Cloud Functions saat menghubungkan ke Cloud Memory Store. Ini mungkin terjadi jika sumber daya yang mendasarinya dihentikan terlalu cepat secara acak oleh Google.

Masalah ini baru saja dimulai sekitar seminggu yang lalu untuk kami, tanpa perubahan pada cara kami menangani koneksi Redis. Kami juga menggunakan ioredis untuk menangani koneksi dan menjalankan node 12.

IORedis memiliki strategi default yang terhubung kembali saat terjadi kesalahan, tetapi beberapa alasan hal itu tidak terjadi.

Apa yang saya lakukan adalah menambahkan konfigurasi berikutnya:

reconnectOnError: (error): boolean => {
  console.log('Always reconnect on error', error)
  return true
}

Kesalahan ECONNRESET masih ada, tetapi sekarang koneksi saya dicoba lagi dan Google Instance saya tidak macet lagi.

CC: @ hkd987

Baca detail lebih lanjut tentang reconnectOnError sini: https://github.com/luin/ioredis

@ robertop87 Membuat penerapan baru dengan konfigurasi khusus untuk selalu reconnectOnError disetel ke true. Sepertinya ini masalah yang perlu dibuka kembali atau tiket baru dibuat, karena ini terjadi pada rilis terbaru.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat