大文件上傳失敗緣由之:Tomcat HttpPost超過大小和超時

今天遇到一例文件上傳失敗,研發的同窗說代碼那邊沒有問題,應該是Tomcat或者Nginx的配置中限制了HttpPost的大小。因而我app

Nginx中限制請求大小的地方是以下的client_max_body_size,咱們圖方便,直接分3000m,應該足矣:post

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

Tomcat則是在server.xml中的connector元素中添加:maxPostSize=」 」 ;「 」中填你須要限制到的大小,如「0」爲不限制。缺省這個參數,就會是2m. 因此應該是這裏出了問題。因而我添加一行maxPostSize=」0″:server

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

我會告訴你這樣改完沒有效果嗎。上傳仍是失敗。xml

由於HttpPost不只是大小會限制,還會有時間限制。雖然你能夠上傳了,但你在connectionTimeout的限制時間內不能傳完,鏈接也會斷開的。blog

因此再將它修改以下,原先的connectionTimeout時間是「20000」,可是注意,單位是毫秒啊……因而我把它加到」2000000「,有半小時以上,足矣吧:get

 <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.it

相關文章
相關標籤/搜索