私はSOとGitHubでこのエラーについてすべての関連する問題を読みましたが、どれもこの状況に対処していないようです。
次のコードを実行すると:
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
メソッドに渡されたonread
エラーコード(-54)以外の追加情報を取得する方法は不明です。 js
この問題はすべてのリクエストで発生します-断続的ではありません。
いくつかの観察:
ここに興味深い部分があります-サーバーをローカルでホストしている場合にのみ、この問題を確実に再現できるようです。問題なくDockerコンテナーを介して、開発インスタンスに到達したり、サーバーをvagrantで実行したりできます。
MacOS Sierra 10.12.6を実行している場合、それが違いを生みます。サーバーはJava=で記述されており、Springフレームワークを使用しています。HTTP呼び出しに使用しているRestTemplate
構成は次のとおりです。
@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);
}
私はこれらの設定をいじくり回してみました。
何か案は?
これはNodeJSの既知の問題であり、解決されています。詳細は http.Agent:アイドルソケットが未処理のECONNRESETをスローする を参照してください。
MacOSで ポートを開く の場合、正しいセキュリティ設定が有効になっていることも確認してください