現象描述:web
系統支持多文件分片上傳,並且支持進度條實時更新。月底當用戶集中大批量作文件上傳時,文件常常上傳到100%就會卡主。按F12打開管理控制檯,報錯:「XMLHttpRequest:網絡錯誤 0x2eff」;後臺日誌發現大量異常信息。spring
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedlyapache
解決思路:tomcat
咱們使用的上傳組件是WebUploader,分片大小是1M,上傳最大線程數:4,而且上傳過程當中還要不斷計算分片的MD5值,因此懷疑當月末上傳併發量很大的狀況下,會對服務器處理和帶寬形成不小的壓力,單個分片上傳的時間可能會超時。因此考慮調整tomcat的配置。服務器
解決方案:網絡
在tomcat的server.xml中加入以下配置併發
<Connector port="9060" protocol="HTTP/1.1"
connectionTimeout="300000" disableUploadTimeout="true"
minProcessors="50" maxProcessors="375" acceptCount="500"
redirectPort="5443" URIEncoding="UTF-8"/>線程
其中:日誌
connectionTimeout:設置鏈接的超時值,以毫秒爲單位。默認值爲60000=60秒orm
disableUploadTimeout:容許Servlet容器,正在執行使用一個較長的鏈接超時值,以使Servlet有較長的時間來完成它的執行,默認值爲false
maxProcessors:最大鏈接線程數
acceptCount:指定當全部能夠使用的處理請求的線程數都被使用時,能夠放處處理隊列中的請求數,就是被排隊的請求數,超過這個數的請求將拒絕鏈接。