web-dev-qa-db-de.com

Spring Boot - Viele ungültige Anfragen und Socket akzeptieren fehlgeschlagene Java.io.IOException: Zu viele offene Dateien

Ich habe eine Maschine mit Spring (Spring Boot 1.5.2.RELEASE) Anwendung. In letzter Zeit erhalte ich viele Warnungen in meiner Protokolldatei:

.w.s.m.s.DefaultHandlerExceptionResolver : Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: null; nested exception is Java.net.SocketTimeoutException

Ich habe mit tcpdump nachgefragt, und viele Anforderungen haben keinen Körper (leer/null) oder einen falschen Körper, z. \00\00\00\00\00\00\00speed":"23.3","user_id":106312}

Das größte Problem ist, dass ich nach einiger Zeit anfange, Ausnahmen in meiner App zu erhalten:

org.Apache.Tomcat.util.net.NioEndpoint   : Socket accept failed

Java.io.IOException: Too many open files
    at Sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
    at Sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.Java:241)
    at org.Apache.Tomcat.util.net.NioEndpoint$Acceptor.run(NioEndpoint.Java:443)
    at Java.lang.Thread.run(Thread.Java:745)

ulimit -n sagt, dass die Grenze für offene Dateien auf 65536 gesetzt ist. Ich denke, es ist groß genug.

Ich gehe davon aus, dass das Empfangen einer großen Anzahl ungültiger Anforderungen IOException verursacht. Warum aber? Und was soll ich tun, um es zu vermeiden und zu reparieren?

9
user3626048

Ich nehme an, Sie verwenden eine Netzsteckdose mit Federstiefel. Sie können nur an maximal 65535 Ports zuhören. Sie können diesen Wert auf einem Computer nicht überschreiten. Sie sollten prüfen, ob Sie die Steckdosen richtig schließen.

1
Djory Krache