Ich habe alle diesbezüglichen Probleme auf SO und GitHub über diesen Fehler gelesen, und keiner von ihnen scheint diese Situation zu lösen.
Wenn ich den folgenden Code ausführen:
response = await axios.get('http://localhost:8082/panda, {
httpAgent: new http.Agent({ keepAlive: true, keepAliveMsecs: 10000 })
});
Ich erhalte folgende Fehlermeldung:
{ 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...
Über den Aufruf von onread
hinaus gibt es keine Stack-Ablaufverfolgung. Es ist also unklar, wie ich zusätzliche Informationen über den ECONNRESET
-Fehlercode (-54) an die onread
-Methode in net.js erhalten kann
Dieses Problem tritt bei jeder Anfrage auf - es ist nicht zeitweise.
Einige Bemerkungen:
Hier ist der interessante Teil - Ich kann dieses Problem nur zuverlässig reproduzieren, wenn ich den Server lokal hoste . Ich bin in der Lage, die dev-Instanz zu erreichen oder den Server in Vagrant über einen Docker-Container ohne Probleme auszuführen.
Ich verwende macOS Sierra 10.12.6, wenn das einen Unterschied macht. Der Server ist in Java geschrieben und verwendet das Spring-Framework. Hier ist die RestTemplate
-Konfiguration, die ich für HTTP-Aufrufe verwende:
@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);
}
Ich habe versucht, mit diesen Einstellungen herumzulaufen, ohne Glück.
Irgendwelche Ideen?
Dies war ein bekanntes Problem mit NodeJS und wurde behoben. Siehe http.Agent: Leerlaufbuchsen werfen unbehandeltes ECONNRESET für Details.
Stellen Sie außerdem sicher, dass Sie die korrekten Sicherheitseinstellungen aktiviert haben, wenn Sie einen Port öffnen unter MacOS