前端vue项目post请求发送请求参数,经过域名,请求url到对应的服务端,如果请求body参数内容较小,比如10kb的样子,服务端对应的接口能正常处理。如果请求的body参数内容较大,比如100kb的样子,接口就会卡着,然后服务端后端报错java.net.SocketTimeoutException: null。 这里的body参数,就是一个简单的字符串。
这个问题在本地开发环境windows系统、测试环境Linux系统都没法复现,但在阿里云k8s里就存在这样的问题。主要考虑是不是k8s哪里做了限流控制,限制了post请求单次请求body内容最大大小。希望调整什么配置,可以让请求正常处理。
检查了阿里云nginx配置,有配置keepalive_timeout 65;client_max_body_size 50m参数。 然后检查了k8s的ingress配置,也加入了如下配置: nginx.ingress.kubernetes.io/client-body-buffer-size: 20m, nginx.ingress.kubernetes.io/proxy-body-size: 20m
关键报错日志堆栈信息:
Caused by: java.net.SocketTimeoutException: null at org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:202) at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:246) at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:227) at org.apache.coyote.http11.InternalNioInputBuffer.readSocket(InternalNioInputBuffer.java:469) at org.apache.coyote.http11.InternalNioInputBuffer.fill(InternalNioInputBuffer.java:862) at org.apache.coyote.http11.InternalNioInputBuffer$SocketInputBuffer.doRead(InternalNioInputBuffer.java:887) at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:137) at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:316) at org.apache.coyote.Request.doRead(Request.java:442) at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290) at org.apache.tomcat.util.buf.ByteChunk.checkEof(ByteChunk.java:431) at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:413) at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315) at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200) at java.io.FilterInputStream.read(FilterInputStream.java:133) at java.io.PushbackInputStream.read(PushbackInputStream.java:186) at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.Reader.read(Reader.java:140) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1432) at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1411) at org.apache.commons.io.IOUtils.copy(IOUtils.java:1208) at org.apache.commons.io.IOUtils.copy(IOUtils.java:1022) at org.apache.commons.io.IOUtils.toString(IOUtils.java:2839)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。