繁体   English   中英

Spring Boot - 许多无效请求和Socket接受失败java.io.IOException:打开的文件太多

[英]Spring Boot - Lot of invalid requests and Socket accept failed java.io.IOException: Too many open files

我有运行机器与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并且很多请求都没有body(空/ null)或者有不正确的主体,例如\\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,但为什么呢? 我应该怎么做才能避免它并修复它?

我猜你使用带有弹簧靴的网络插座。 您最多只能侦听65535端口,在一台机器上不能超过这个数值。 您应该检查是否正确关闭了插座。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM