上传文件出现SocketTimeoutException: Read timed out? 400 报错
使用多线程模拟并发请求上传图片文件时,一共上传100个文件,每次都有3-4个会出现read timed out. 设置了客户端的连接超时时间和服务器端的tomcat连接数,还有超时时间都没有解决这个问题, 请教下各位大神的思路
<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秒
disableUploadTimeout:允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行,默认值为false
maxProcessors:最大连接线程数
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,就是被排队的请求数,超过这个数的请求将拒绝连接。
######
几次测试之后发现,maxThreads开到5左右没有出现失败问题, 且上传速度也保持在1秒左右. 但是如果开到10就会出现socket read timed out. 按道理这个并发线程开的大一点应该更快才对,为什么反而更慢,而且还会超时呢.
######maxThreads默认是200,能否dump一下超时的堆栈信息######@淘淘我的小宝宝 感觉应该是图片服务器没有响应客户端导致的
######
客户端的异常信息
######问题解决,原因是server.maxHttpPostSize=102400000这里设置过大,导致每次请求服务器都会默认占用将近100M的内存空间,并发稍微高一点就会内存溢出
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。