νκ²½:
node version v7.10.0
uname -a
Linux iZ2zebqg2v1h2g7jmo9endZ 3.10.0-514.6.2.el7.x86_64 #1 SMP Thu Feb 23 03:04:39 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
request package version: "request": "^2.74.0"
μ΅μ€νλ μ€ μ¬μ©
μΌλΆ λ‘κ·Έλ₯Ό μ°Ύμ΅λλ€.
{ Error: ESOCKETTIMEDOUT
at ClientRequest.<anonymous> (/data1/baas_server/baas_x37/node_modules/request/request.js:819:19)
at Object.onceWrapper (events.js:293:19)
at emitNone (events.js:86:13)
at ClientRequest.emit (events.js:188:7)
at Socket.emitTimeout (_http_client.js:679:10)
at Object.onceWrapper (events.js:293:19)
at emitNone (events.js:86:13)
at Socket.emit (events.js:188:7)
at Socket._onTimeout (net.js:352:8)
at ontimeout (timers.js:386:14)
at tryOnTimeout (timers.js:250:5)
at Timer.listOnTimeout (timers.js:214:5) code: 'ESOCKETTIMEDOUT', connect: false }
μμ€ μ½λλ₯Ό λ³΄κ³ λ§μ μ£Όμμ μ»μ΅λλ€.
var setReqTimeout = function() {
// This timeout sets the amount of time to wait *between* bytes sent
// from the server once connected.
//
// In particular, it's useful for erroring if the server fails to send
// data halfway through streaming a response.
self.req.setTimeout(timeout, function () {
if (self.req) {
self.abort()
var e = new Error('ESOCKETTIMEDOUT')
e.code = 'ESOCKETTIMEDOUT'
e.connect = false
self.emit('error', e)
}
})
}
κ·Έλμ κ·Έ μ΄μ μ λ²κ·Έλ₯Ό μμ νλ λ°©λ²μ μκ³ μΆμ΅λλ€.
νΈλ¦¬κ±°νλ λ°©λ²μ λͺ¨λ₯΄κ² μ΅λλ€. λ‘κ·Έμμλ§ μ°Ύκ±°λ μμ²μ΄ μ€λ₯μμ μ°Ύμ΅λλ€.
κ°μ¬ ν΄μ;
@Fov6363 μ λ κ°μ λ¬Έμ μΈλ° ν΄κ²°νμ ¨λμ?
@liujb redis confλ₯Ό μ λ°μ΄νΈνκ³ μκ° μ΄κ³Όλ₯Ό 0μΌλ‘ μ€μ ν©λλ€.
λλ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. κ·Έκ²μ μμ²μ κ΄ν κ²μ΄ μλλλ€. Nginxμ λ¬Έμ .
μ λ μ
node ProxyServer.js
start: 0.0.0.0:8080
events.js:182
throw er; // Unhandled 'error' event
^
Error: ESOCKETTIMEDOUT
at ClientRequest.<anonymous> (/Users/safe/myhktools/node_modules/request/request.js:819:19)
at Object.onceWrapper (events.js:314:30)
at emitNone (events.js:105:13)
at ClientRequest.emit (events.js:207:7)
at Socket.emitTimeout (_http_client.js:722:34)
at Object.onceWrapper (events.js:314:30)
at emitNone (events.js:105:13)
at Socket.emit (events.js:207:7)
at Socket._onTimeout (net.js:402:8)
at ontimeout (timers.js:469:11)
μλ²κ° νλ‘μλ₯Ό μ¬μ©νκΈ° λλ¬Έμ μ΄κ²μ μ°Ύμμ΅λλ€.
@liujb μλ νμΈμ, Nginxμ λ¬Έμ λΌκ³ νμ ¨μ΅λλ€. μ΄ λ¬Έμ λ₯Ό μ΄λ»κ² ν΄κ²°ν©λκΉ?
ESOCKETTIMEDOUTμ μ°κ²° μκ° μ΄κ³Όμ
λκΉ μλλ©΄ μ½κΈ° μκ° μ΄κ³Όμ
λκΉ?
200 μμ²/μ΄, μ΄ μ€λ₯κ° λ°μν©λλ€.
λΉλκΈ° μμ²μ΄ λ무 λ§μΌλ©΄ Linuxμμ μ΄ μμΈκ° λ°μν©λλ€. λ΄κ° μ°Ύμ ν΄κ²° λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
μ΄ μ΅μ μ€μ :
agent: false, pool: {maxSockets: 100}
μ΄μ μκ° μ΄κ³Όκ° κ±°μ§λ§μΌ μ μμΌλ―λ‘ μκ° μ΄κ³Όλ₯Ό λλ €μΌ ν μ μμ΅λλ€.
λλλ‘ λ€λ₯Έ μ€λ₯μ ν¨κ» μ΄ μ€λ₯κ° λ°μνμ΅λλ€.
Error: read ECONNRESET
at exports._errnoException (util.js:1034:11)
at TLSWrap.onread (net.js:580:26)
μ¬μ ν μ΄ λ¬Έμ κ° μλ μ¬λμ΄ μμ΅λκΉ? ν λ²μ λ§μ μμ²μ 보λ΄μ λ°κ³ μμ΅λλ€.
λ
Έλ μ΅μ€νλ μ€ κΈ°λ° μμ
μμ λν λ¨μΌ λ£κΈ° μμ²λ λ§μ°¬κ°μ§μ
λλ€.
νλ‘μ, μ€νΈλ¦¬λ° μμ, μμ
μ μΈ‘μμ DBλ₯Ό μ²λ¦¬νλ μ¬λ¬ λΉλκΈ° μ½μμ μμνλ λ¨μΌ μμ².
μ μλ μμ΄μ νΈ: false, ν: μμ² μ΅μ μ {maxSockets: 100}μ΄(κ°) λμμ΄ λμ§ μμμ΅λλ€.
κ΄λ¦¬μμ μ μμ΄ μμ΅λκΉ?
agent: false, pool: {maxSockets: 100}
μμ μ΅μ
μ μ€μ νλ©΄ μ€λ₯κ° 55μμ 8λ‘ μ€μ΄λλλ€.
κ·Έλ° λ€μ m axSockets:200 μ μ€μ νμ΅λλ€. νλμ μ€λ₯λ§ λ¨μμ΅λλ€
μ΄μ λ λͺ¨λ₯΄κ² μ§λ§ ν¨κ³Όκ° μμ΅λλ€
request 2.88.0
κ° λ°μνλ©΄ κ°λ μ±μμ μ μ‘λκ³ 200κ°μ μν μ½λκ° μλ μμ λΆλΆμμ μ²λ¦¬λ μμ²μ λν΄ ESOCKETTIMEDOUTμ΄ λ°μν©λλ€. μμ² λλ https λͺ¨λ μ¬μ΄ μ΄λκ°μ λ²κ·Έμ²λΌ 보μ
λλ€. λ€μ λ§νμ§λ§, μμ² libλ 200 http μν μ½λλ‘ μ²λ¦¬λλ https μμ²μ μμΈλ₯Ό throwν©λλ€. μ΄λ€ μμ΄λμ΄λΌλ νμν©λλ€. λ¬Έμ λ μ°λ¦¬ μΈ‘μμ μ½κ² μ¬νν μ μμΌλ―λ‘(μ½ 200κ°μ μμ²μ΄ μ€ν¨ν¨) κ΄μ¬ μλ λΆλ€μ΄ κ³μλ©΄ λ μμΈν μ 보λ₯Ό μ κ³΅ν΄ λ릴 μ μμ΅λλ€.
μΆμ : μ€ν¨ν μμ²μ λν μ¬μλλ₯Ό ꡬννμ¬ ν΄κ²° λ°©λ²μ μννμ΅λλ€.
μλ
νμΈμ,
μ€λͺ
μμλ "μ°κ²° μκ° μ΄κ³Ό λ° μ½κΈ° μκ° μ΄κ³Ό"κ° μλ€κ³ λμ μμ΅λλ€.
κ°κ° λ°λ‘ μ€μ νλ λ°©λ²μ΄ μμκΉμ?
κ°λ μ μ μλ λ€νΈμν¬ λ¬Έμ λ‘ μΈν΄ μ°κ²° μκ° μ΄κ³Όκ° λ°μνλλ°, λ΅λ³μ λ°μ μκ°μ κ³ λ €νκ³ μλ μ 체 μκ° μ΄κ³Όλ₯Ό κΈ°λ€λ¦¬μ§ μκ³ μμ²μ μ¬μλν μ μλλ‘ μ΅λν 빨리 μκ° μ΄κ³Όλ₯Ό νκ³ μΆμ΅λλ€. .
κ°μ¬ ν΄μ.
μμ :
EventEmitter = require('events').EventEmitter
EventEmitter.prototype._maxListeners = n_maxLs;
var _fnNull = function(e){if(program && program.verbose)console.log(e)};
process.on('uncaughtException', _fnNull);
process.on('unhandledRejection', _fnNull);
EventEmitter.defaultMaxListeners = n_maxLs;
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
@MumiaIrrequieta @anosulchik @deluo
μμ :
EventEmitter = require('events').EventEmitter EventEmitter.prototype._maxListeners = n_maxLs; var _fnNull = function(e){if(program && program.verbose)console.log(e)}; process.on('uncaughtException', _fnNull); process.on('unhandledRejection', _fnNull); EventEmitter.defaultMaxListeners = n_maxLs; process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
@MumiaIrrequieta @anosulchik @deluo
μ΄κ²μ΄ λ³λμ μκ° μ΄κ³Όλ₯Ό μ€μ νλ λ° μ΄λ»κ² λμμ΄ λ©λκΉ?
λ§μ§λ§ λ μ€μ μ°¨μ΄μ μ 무μμ
λκΉ?
ESOCKETTIMEDOUTμ λν μμ μ¬νλ μλ κ² κ°μ΅λλ€. @hktalent μ΄μ λν μμΈν μ 보λ₯Ό μ 곡ν μ μμ΅λκΉ?
λνμ΄ λ¬Έμ κ° μμ΅λλ€. λλ λ§€λΆ μμ² κ°μ μμ²μ 보λ
λλ€. λͺ¨λ μ°κ²°μ μ€ννμ§ μ½ 1μ£ΌμΌ νμ ESOCKETTIMEDOUT
μ¦μ μλ΅μ μμν©λλ€.
@SirLancelot-OG ν΄κ²°νμ ¨λμ?
1λΆλ§λ€ λ°μ΄ν°λ₯Ό ν΄λ§νλλ° μΌλΆ APIκ° μ°λ°μ μΌλ‘ λλ €μ§κ³ μ 체 μμ²μ΄ 1λΆ μ΄μ μ€νλμ΄ λμ λμ΄ μκ° μ΄κ³Όκ° λ°μν κ² κ°μ΅λλ€. μ μ ν λ‘κ·ΈμΈμ΄ μμμ΅λλ€.
μ΄μ λ΄ λ°μ΄ν°μ μΉ μμΌμ μ¬μ©νλ κ²μΌλ‘ μ΄λνμ΅λλ€!
λͺ¨λ μμ²μ ββλν΄ μ΄ λ¬Έμ κ° μΌκ΄λκ² λνλ©λλ€. μμ²μ νλ©΄ μμ²μ΄ μλ£λ©λλ€. κ·Έλ¬λ μκ° μ΄κ³Όκ° 10μ΄μ΄λ©΄ λ¨μΌ μμ²μ 10μ΄ νμ 'ESOCKETTIMEDOUT'μ μ»μ μ μμ΅λλ€.
λꡬλ μ§ μ΄κ²μ κ³ μ³€μ΅λκΉ?
λλ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. κ·Έκ²μ μμ²μ κ΄ν κ²μ΄ μλλλ€. Nginxμ λ¬Έμ .
Nginxμ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²
μ°λ¦¬λ μ΄κ²μ κ°μ§κ³ μμΌλ©° λΉλμ μ€ν¨νκ³ μμ΅λλ€ ...μ΄ μ λΉν μ λΉν nginx μμ μ 무μμ λκΉ??
κ°μ₯ μ μ©ν λκΈ
λΉλκΈ° μμ²μ΄ λ무 λ§μΌλ©΄ Linuxμμ μ΄ μμΈκ° λ°μν©λλ€. λ΄κ° μ°Ύμ ν΄κ²° λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
μ΄ μ΅μ μ€μ :
μ΄μ μκ° μ΄κ³Όκ° κ±°μ§λ§μΌ μ μμΌλ―λ‘ μκ° μ΄κ³Όλ₯Ό λλ €μΌ ν μ μμ΅λλ€.