我已經閱讀了SO和GitHub上有關此錯誤的所有相關問題,而且他們都沒有解決這種情況。Node.js HTTP GET「ECONNRESET」讀取時出錯
當我運行下面的代碼:
response = await axios.get('http://localhost:8082/panda, {
httpAgent: new http.Agent({ keepAlive: true, keepAliveMsecs: 10000 })
});
我收到以下錯誤:
{ Error: socket hang up
at createHangUpError (_http_client.js:345:15)
at Socket.socketOnEnd (_http_client.js:437:23)
at emitNone (events.js:110:20)
at Socket.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1059:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9) code: 'ECONNRESET' }
{ Error: read ECONNRESET
at _errnoException (util.js:1019:11)
at TCP.onread (net.js:608:25)
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
etc...
有沒有堆棧跟蹤超出onread
調用因此目前還不清楚我怎麼能得到任何額外的資訊將ECONNRESET
錯誤代碼(-54)傳遞給net.js中的onread
方法
此問題與每個請求t--它不是間歇性的。
幾個意見:
- 使得從鉻相同的請求或郵遞員請求不失敗
- 試圖複製從Chrome中一個成功的請求,通過使用相同的標題時,失敗
- 設置accept頭使用「gzip的」,等等。沒有幫助 - 我已經嘗試了所有的建議,包括一些奇怪的像設置內容長度和增加身體的要求儘管這是一個GET請求
- 錯誤總是出現在net.js,但請求和愛可信庫
這裏有一個有趣的現象發生了 - 我只能似乎可靠地重現這個問題時,我主持服務器本地。我可以通過Docker容器訪問dev實例或通過流浪者運行服務器,沒有問題。
我正在運行macOS Sierra 10.12.6,如果這有什麼區別。服務器是用Java編寫的,並使用Spring框架。這裏是RestTemplate
配置我使用HTTP調用:
@Bean
public RestTemplate restTemplate() {
//request timeout
int timeout = 5000;
//Connection Pooling factory with timeouts to prevent disastrous request responses
HttpComponentsClientHttpRequestFactory cf = new HttpComponentsClientHttpRequestFactory();
cf.setReadTimeout(timeout);
cf.setConnectTimeout(timeout);
cf.setConnectionRequestTimeout(timeout);
return new RestTemplate(cf);
}
我已經試過,沒有運氣這些設置瞎搞。
任何想法?
「連接重置」錯誤可能表明服務器進程觸及問題(例如,它崩潰)。你有沒有看過你試圖打電話的任何服務器進程的日誌? –
我是測試這一點的同時本地調試過程 - 沒有崩潰,沒有在日誌......我嘗試添加攔截記錄錯誤,並在我的application.properties文件改變各種日誌記錄級別 - 它似乎並不像請求是否曾經到達服務器 – Jordan
節點的哪個版本等等......你在使用什麼版本? – Corvusoft