[英]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.