科技

伺服器上傳,時間超時 tomcat 如何設定保持連線

做好了項上,其中包含有一個上傳的功能。在開發環境和測試環境執行、測試都沒什麼問題。也許是由於本地的區域網的問題,一切都執行的比較快,但把它釋出到外網的伺服器上去時。就特別的慢。上傳小的檔案還算比較過得去。但是大的檔案 ,只見request在請求,但就沒有進度條在走。等了半天,最後死了。還報了一個鬱悶的錯:

#org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:227)# - Processing of multipart/form-data request failed. Read timed out

看到request failed,看到Read timed out,那個糾結啊。從程式碼到伺服器弄了半天,沒成~~~

勞師動眾的查了些資料,最後在伺服器加長了連線、請求的時間:

connectionTimeout="60000"

keepAliveTimeout="200000"

connectionTimeout - 網路連線超時,單位:毫秒

keepAliveTimeout - 長連線最大保持時間(毫秒)

測試一下,每次上傳一個正常的檔案要多長時間,把keepAliveTimeout的時間設定成比上傳的時間長一些便可。

暈呼呼的一早上,最後搞定。

哎,是應該再學學服務方面的了。最後貼上另外一些引數和說明,以供以後學習和借鑑:

maxThreads:Tomcat可建立的最大的執行緒數,每一個執行緒處理一個請求;

minSpareThreads:最小備用執行緒數,tomcat啟動時的初始化的執行緒數;

maxSpareThreads:最大備用執行緒數,一旦建立的執行緒超過這個值,Tomcat就會關閉不再需要的socket執行緒;

acceptCount:指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,就是被排隊的請求數,超過這個數的請求將拒絕連線。

maxKeepAliveRequests - 最大長連線個數(1表示禁用,-1表示不限制個數,預設100個。)

maxHttpHeaderSize - http請求頭資訊的最大程度,超過此長度的部分不予處理。一般8K。

URIEncoding - 指定Tomcat容器的URL編碼格式。

enableLookups - 是否反查域名,取值為:true或false。為了提高處理能力,應設定為false

maxProcessors - 最大連線執行緒數,即:併發處理的最大請求數,預設值為75

port="80"

protocol="HTTP/1.1"

disableUploadTimeout="true

最後找到了問題所在。。。是因為資料夾裡的檔案太多,達到了幾百G,檔案寫不進去了導致的。。。所以狀態是W(waiting)

原文:

Reference:科技日報

看更多!請加入我們的粉絲團

轉載請附文章網址

不可錯過的話題