ΠΡΠΈΠ±ΠΊΠ°: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ redis1.tfs. tfs: 6379 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET Π² RedisClient.on_error (/var/www/a/b/c/node_modules/redis/index.js:196:24) Π² Socket.
Π² 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, ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° Β«ECONNRESETΒ» Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Node.js Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ 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.
Π² 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.
Π― ΠΏΠΎΠ»ΡΡΠ°Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Redis Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ΅ΡΠ΅Π· IP Π² Node.
Π― ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ ΠΎΠ½Π° Π±ΡΠ»Π° ΡΠ΅ΡΠ΅Π½Π° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Π²ΡΠ΅ΡΠ° ΠΈΠ³ΡΠ°Π» ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ /etc/hosts
ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅. ΠΠ΅ Ρ
Π²Π°ΡΠ°Π»ΠΎ:
127.0.0.1 localhost
@ ayazpasha2434 ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ Π΄Π»Ρ Π²Π°Ρ, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π°ΠΌΠ΅ΠΊΠ°ΡΡ, ΠΎΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½Π΅ ΡΠ·Π»Π° ΠΈ Π² env / shell / OS / VM. ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π°Π΄ ΠΈ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Π½Π΅Π΅.
@sarathms Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΅ΠΌ ΡΠ°ΠΉΠ»Π΅ hosts. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ°ΡΠΈΠ½Π° Redis - ΡΠ΄Π°Π»Π΅Π½Π½Π°Ρ. ΠΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ²Π΅ΡΠΈΠ», Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ localhost Π² ΠΌΠ°ΡΠΈΠ½Π΅ Redis. ΠΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΡΠ΅ΡΠ΅Π½Π°.
Π― ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠΎΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ
events.js: 72
Π±ΡΠΎΡΠΈΡΡ ΡΡ; // ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ 'ΠΎΡΠΈΠ±ΠΊΠ°'
^
ΠΡΠΈΠ±ΠΊΠ°: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ pub-redis-10606.us-east-1-1.1.ec2.garantiadata. com: 10606 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET Π² RedisClient.on_error (C: UsersGigiDesktopeduknow_api_ver_1authnode_m
odulesredisindex.js: 196: 24)
Π² Socket.
Π² Socket.emit (events.js: 95: 17)
Π² net.js: 441: 14
Π² process._tickCallback (node.js: 442: 13)
@ ayazpasha2434 ΠΡΠ° ΡΡΡΠΎΠΊΠ° ΡΠ΅ΡΠΈΠ»Π° ΠΌΠΎΡ ΠΎΡΠΈΠ±ΠΊΡ
client.on ('ΠΎΡΠΈΠ±ΠΊΠ°', ΡΡΠ½ΠΊΡΠΈΡ (ΠΎΡΠΈΠ±ΠΊΠ°) {console.error (ΠΎΡΠΈΠ±ΠΊΠ°)})
@ ayazpasha2434 Π£ @Waterloo Π±ΡΠ» Π΄Π»Ρ Π²Π°Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ?
ΠΠΎΡ ΠΎΠΆΠ΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π²Π°ΡΠΈΠΌ ΡΠ΅ΡΠ΅Π²ΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ node redis. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠ°Π»ΠΎ (ΠΈ Π΅Π³ΠΎ Π²ΡΠ΅Π³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡ).
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ» http (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅) Π½Π° ΡΠ΅ΡΠ²Π΅Ρ JAVA. {[ΠΡΠΈΠ±ΠΊΠ°: ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET]
ΠΊΠΎΠ΄: 'ECONNRESET',
errno: 'ECONNRESET',
ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ²: 'ΡΠΈΡΠ°ΡΡ',
ΠΎΡΠ²Π΅Ρ: undefined}
ΠΡΠΈΠ±ΠΊΠ°: ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² exports._errnoException (util.js: 856: 11)
Π² TCP.onread (net.js: 546: 26)
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π·Π²ΠΎΠ½ΠΎΠΊ!
POST / user_archives / create / save 500 45,306 ΠΌΡ - 386
ΠΡΠΈΠ±ΠΊΠ°: ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² exports._errnoException (util.js: 856: 11)
Π² TCP.onread (net.js: 546: 26)
@ biggu0 Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΊΠ°ΠΊΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Ρ node_redis. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ECONNRESET, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ stackoverflow .
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ ,
ΠΡ ΡΠΎΠΆΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ ΠΈΠ·-Π·Π° redis SNAPSHOTTING. ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° redis Π΄Π΅Π»Π°Π΅Ρ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ²ΠΈΡΡ ΡΠ΅Π±Ρ, Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ ΠΆΡΡΠ½Π°Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΆΡΡΠ½Π°Π»Π°ΠΌΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Redis, ΠΈ Π²ΡΠ΅ΠΌΡ ΡΠΎΡΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ.
Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΌΠΊΠ° Π² redis.conf
ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ 900 1
ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ 300 10
ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ 60 10000
Π‘ΠΎΠΎΠ±ΡΠΈΡΠ΅ Π½Π°ΠΌ, Π΅ΡΠ»ΠΈ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ERR Π² RedisClient.emit (events.js: 188: 7)
ΠΡΠΈΠ±ΠΊΠ° Π½Π° RedisClient.on_error (/home/vcap/app/node_modules/redis/index.js:394:14)
ERR Π² RedisClient.
ERR Π² emitErrorNT (net.js: 1281: 8)
ERR Π² Socket.
ERR Π² process._tickCallback (internal / process / next_tick.js: 98: 9)
ERR ΠΡΠΈΠ±ΠΊΠ°: ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Redis Ρ XXXXXXXX: ΠΎΡΠΈΠ±ΠΊΠ°
ERR Π² TCP.onread (net.js: 572: 26)
ERR Π² _combinedTickCallback (internal / process / next_tick.js: 74: 11)
ERR Π½Π° emitOne (events.js: 96: 13)
ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅ ._errnoException (util.js: 1022: 11)
ERR Π² Socket.emit (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 Π² RedisClient.on_error (/var/sample-app/node_modules/redis/index.js:410:10)n Π² Socket.
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ·Π»Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Docker ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Redis, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌΡ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Linux EC2.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π·Π΄Π΅ΡΡ ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ stunnel Π΄Π»Ρ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ redis Π½Π° localhost, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ stunnel.
fips = Π½Π΅Ρ
pid = /var/run/stunnel.pid
ΠΎΡΠ»Π°Π΄ΠΊΠ° = 7
options = NO_SSLv3
output = /var/log/stunnel.log
[redis-cli]
ΠΊΠ»ΠΈΠ΅Π½Ρ = Π΄Π°
accept = 127.0.0.1:6379
connect = redi ΡΠΎΡΠΊΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ: 6379
ΡΠ·Π΅Π» ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π½ΠΈΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΡΡ. ΠΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π΄ΠΎΠΊΠ΅ΡΠΎΠ².
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ 127.0.0.1:6379 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² TCP.onStreamRead (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ / stream_base_commons.js: 111: 27)
ΠΡΠΈΠ±ΠΊΠ°: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ 127.0.0.1:6379 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² TCP.onStreamRead (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ / stream_base_commons.js: 111: 27)
ΠΡΠΈΠ±ΠΊΠ°: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ 127.0.0.1:6379 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² TCP.onStreamRead (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ / stream_base_commons.js: 111: 27)
AbortError: ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Redis ΠΏΠΎΡΠ΅ΡΡΠ½ΠΎ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ΅ΡΠ²Π°Π½Π°. ΠΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ.
Π»ΡΠ±ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π·Π΄Π΅ΡΡ ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ stunnel Π΄Π»Ρ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ redis Π½Π° localhost, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ stunnel.
fips = Π½Π΅Ρ
setuid = ΠΊΠΎΡΠ΅Π½Ρ
setgid = ΠΊΠΎΡΠ΅Π½Ρ
pid = /var/run/stunnel.pid
ΠΎΡΠ»Π°Π΄ΠΊΠ° = 7options = NO_SSLv2
options = NO_SSLv3
output = /var/log/stunnel.logΠΊΠ»ΠΈΠ΅Π½Ρ = Π½Π΅Ρ
ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ = Π΄Π°
[redis-cli]
ΠΊΠ»ΠΈΠ΅Π½Ρ = Π΄Π°
accept = 127.0.0.1:6379
connect = redi ΡΠΎΡΠΊΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ: 6379ΡΠ·Π΅Π» ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ Π½ΠΈΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΡΡ. ΠΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π΄ΠΎΠΊΠ΅ΡΠΎΠ².
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ 127.0.0.1:6379 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² TCP.onStreamRead (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ / stream_base_commons.js: 111: 27)
ΠΡΠΈΠ±ΠΊΠ°: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ 127.0.0.1:6379 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² TCP.onStreamRead (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ / stream_base_commons.js: 111: 27)
ΠΡΠΈΠ±ΠΊΠ°: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Redis ΠΊ 127.0.0.1:6379 Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ - ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
Π² TCP.onStreamRead (Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ / 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 ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΎΡΠΊΡΡΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΡΠ΅ΡΠ΅Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π»ΡΠ΄ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΠΎΡΠ²Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ΡΠ΅Π½Π°.
Bumping: ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ:
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'
},
Π― Π²ΠΈΠΆΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ:
Redis ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Google Cloud MemoryStore.
ΠΡΡΠ½Π°Π»Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ:
[ioredis] ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ: ΠΎΡΠΈΠ±ΠΊΠ°: ΠΏΡΠΎΡΡΠΈΡΠ΅ ECONNRESET
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΊΠ°ΠΆΠ΄ΡΠ΅ 24 ΡΠ°ΡΠ° Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈΠ»ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ°Π³ΠΎΠ², ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ
@ robertop87
Π― Π²ΠΈΠΆΡ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Redis ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Google Cloud MemoryStore. ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
Π’Π°ΠΊΠΆΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Cloud run / Cloud Functions ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ Cloud Memory Store. ΠΡΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ, ΠΊΠΎΠ³Π΄Π° Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ Π±ΡΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Google ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°Π½ΠΎ.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π°ΡΠ°Π»Π°ΡΡ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΊΠΎΠ»ΠΎ Π½Π΅Π΄Π΅Π»ΠΈ Π½Π°Π·Π°Π΄, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Redis. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ioredis Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ·Π»Π° 12.
IORedis ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅, Π½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
Π§ΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π», ΡΠ°ΠΊ ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
reconnectOnError: (error): boolean => {
console.log('Always reconnect on error', error)
return true
}
ΠΡΠΈΠ±ΠΊΠ° ECONNRESET Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ, ΠΈ ΠΌΠΎΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Google Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠ°Π΅Ρ.
CC: @ hkd987
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ reconnectOnError
ΡΠΈΡΠ°ΠΉΡΠ΅ Π·Π΄Π΅ΡΡ:
@ robertop87 ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅Π³Π΄Π° reconnectOnError
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» true. ΠΡΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π·Π°ΡΠ²ΠΊΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@ ayazpasha2434 ΠΡΠ° ΡΡΡΠΎΠΊΠ° ΡΠ΅ΡΠΈΠ»Π° ΠΌΠΎΡ ΠΎΡΠΈΠ±ΠΊΡ
client.on ('ΠΎΡΠΈΠ±ΠΊΠ°', ΡΡΠ½ΠΊΡΠΈΡ (ΠΎΡΠΈΠ±ΠΊΠ°) {console.error (ΠΎΡΠΈΠ±ΠΊΠ°)})