做好了项上,其中包含有一个上传的功能。在开发环境和测试环境运行、测试都没什么问题。也许是由于本地的局域网的问题,一切都运行的比较快,但把它发布到外网的服务器上去时。就特别的慢。上传小的文件还算比较过得去。但是大的文件 ,只见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)