开发者社区> 问答> 正文

阿里云K8部署springboot项目,post大内容请求到服务端,@RequsetBody超时。

前端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)

展开
收起
游客fvnka2u2veqsc 2023-02-14 19:07:34 376 0
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    需要在阿里云的服务器控制台设置安全组

    2023-02-15 22:20:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多