大文件上传失败原因之:Tomcat HttpPost超过大小和超时

今天遇到一例文件上传失败,研发的同学说代码那边没有问题,应该是Tomcat或者Nginx的配置中限制了HttpPost的大小。于是我

Nginx中限制请求大小的地方是如下的client_max_body_size,我们图方便,直接分3000m,应该足矣:

      location /app {
            proxy_pass        http://server_name;
            client_max_body_size  3000m;
            access_log off;
        }

Tomcat则是在server.xml中的connector元素中添加:maxPostSize=” ” ;“ ”中填你需要限制到的大小,如“0”为不限制。缺省这个参数,就会是2m. 所以应该是这里出了问题。于是我添加一行maxPostSize=”0″:

 <Connector port="8038" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8028" URIEncoding="UTF-8"
               maxThreads="1000"
               maxPostSize="0"
               minSpareThreads="25" maxSpareThreads="75"  
               acceptCount="200"  />

我会告诉你这样改完没有效果吗。上传还是失败。

因为HttpPost不仅是大小会限制,还会有时间限制。虽然你可以上传了,但你在connectionTimeout的限制时间内不能传完,连接也会断开的。

所以再将它修改如下,原先的connectionTimeout时间是“20000”,但是注意,单位是毫秒啊……于是我把它加到”2000000“,有半小时以上,足矣吧:

 <Connector port="8038" protocol="HTTP/1.1" 
               connectionTimeout="2000000" 
               redirectPort="8028" URIEncoding="UTF-8"
               maxThreads="1000"
               maxPostSize="0"
               minSpareThreads="25" maxSpareThreads="75"  
               acceptCount="200"  />

实测成功。

This entry was posted in asiter on 2013 年 11 月 25 日 by aliao.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值