整理原因:接口对接时,发现对方请求的数据我们后台无法接收到,收到的时候是空的。把对方的测试数据拿过来还原,在本地bug启动交换平台项目,利用postman将对方的入参输入,还原出错场景,果然获取不到数据;
1.首先删掉ubody中的数据,发现后台可以获取到数据;
2.删除ubody中其余附件流,发现也可以获取到数据
3.查看tomcat中server.xml的配置文件,发现没有配置请求体的文件大小,默认人为2M的配置是否不满足应用,果然对方的请求大小为5M到10M
4.配置server.xml的maxPostSize属性,单位字节
tomcat请求体大小默认为2M
在tomcat 的server.xml中添加一行:maxPostSize="10485760";表示post请求体最大为10M(10*1024*1024=10485760);maxPostSize="-1" 为不限制文件大小(谨慎使用,服务器压力会太大)
<Connector connectionTimeout="20000" port="8089" protocol="HTTP/1.1" redirectPort="8443"
maxPostSize="10485760"/>
其他参数配置:
<Connector
executor="tomcatThreadPool" 执行器
port="8088" 端口号
protocol="org.apache.coyote.http11.Http11NioProtocol" 协议:Http11NioProtocol并发处理量大
maxThreads="4000" 最大连接数
minSpareThreads="30" 服务器启动时创建的处理请求的线程数
connectionTimeout="60000" 指定超时的时间数(以毫秒为单位) 1秒 = 1000毫秒 这里为60s
redirectPort="8443" 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
enableLookups="false" enableLookups:调用request、getRemoteHost()执行DNS查询,以返回远程主机的主机名,如果设置为false,则直接返回IP地址。
acceptCount="1000" 当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100
maxPostSize="10485760" 当maxPostSize="-1"时 POST方式上传的文件大小不会被限制;这里为10M,1024*1024*10;单位:字节
maxHttpHeaderSize="8192" http最大请求头大小设置8194/1024 = 8k
compression="on" 是否启用压缩 on为启用(文本数据压缩)
disableUploadTimeout="true" 允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行
compressionMinSize="2048"
acceptorThreadCount="2" compressableMimeType="text/html,text/plain,text/css,application/javascript,application/json,application/x-font-ttf,application/x-font-otf,image/svg+xml,image/jpeg,image/png,image/gif,audio/mpeg,video/mp4"
processorCache="2000" 启用压缩的输出内容大小,这里面默认为2KB
tcpNoDelay="true" 禁用了Nagle算法,允许小包的发送
connectionLinger="5" socket linger参数值。当socket即将关闭时(前)阻塞的时间,单位:秒。如果设置为-1,表示关闭linger。在BIO(Blocking IO)和AJP链接中默认为100,NIO中默认为25.
server="Server Version 11.0"
useBodyEncodingForURI="true" 若请求体采用utf-8解析,则请求参数也要采用utf-8来解析
allowTrace="false" 防止http TRACE 跨站攻击
/>