服务器上传,时间超时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=""

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)

原文:

打开凤凰新闻,查看更多高清图片