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?
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.