Tomcat及文件上传相关问题
1. Tomcat-Post请求超限制
jax请求传base64太大,springboot后台无法接收 。具体体现形式:对应属性值为null
开发环境
在 application.yml
中添加:
server:
tomcat:
max-http-post-size: -1
max-http-form-post-size
: 15MB 配置的值格式定义为: nB、nKB、nMB、nGB、nTB,n 为需要设置的值。
生产环境
在Connector元素中增加 maxPostSize
属性,并设置为 -1
,表示不限制。
注意:Tomcat 版本有差异,7.0.63 之前设置 0 ,之后(包括 7.0.63 )设置 -1 。
解决:
打开tomcat/conf/server.xml 配置文件
增加 maxPostSize="-1" 后:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="-1"
maxHttpHeaderSize ="102400"
URIEncoding="UTF-8" />
其他参数配置:
<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 跨站攻击
/>
2. Tomcat配置,参数个数maxParameterCount默认个数10000
TOMCAT对参数的大小和个数是有默认限制的。大小限制为2M,个数限制为10000个。
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="19443"
maxPostSize="-1"
maxParameterCount="-1"/>