Spring Boot - множество недопустимых запросов и Socket принимает сбой java.io.IOException: слишком много открытых файлов - PullRequest
0 голосов
/ 29 октября 2018

У меня работает машина с приложением Spring (Spring Boot 1.5.2.RELEASE). В последнее время я получаю много предупреждений в моем лог-файле:

.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

Я проверял с помощью tcpdump, и у многих запросов нет тела (пустое / пустое) или неверное тело, например. \00\00\00\00\00\00\00speed":"23.3","user_id":106312}

Самая большая проблема в том, что через некоторое время я начинаю получать исключения в моем приложении:

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 говорит, что лимит открытых файлов установлен на 65536, поэтому я думаю, что он достаточно большой.

Я предполагаю, что получение большого количества недопустимых запросов вызывает IOException, но почему? И что мне делать, чтобы этого избежать и исправить?

1 Ответ

0 голосов
/ 09 ноября 2018

Я полагаю, вы используете веб-сокет с пружинной загрузкой. Вы можете прослушивать только 65535 портов максимум, вы не можете превысить это значение на машине. Вы должны проверить, правильно ли вы закрываете свои розетки.

...