文件流输出时间太长报错:ERROR:org.apache.catalina.connector.ClientAbortException: java.net.SocketTimeoutExceptio

1. 前情

最近做的项目需要使用canvas,给canvas一个url返回文件流可以读取到图片文件。可能时canvas读取速度慢(正常接受不报错),打开较大的图片文件的时候后台有时报错
ERROR:org.apache.catalina.connector.ClientAbortException: java.net.SocketTimeoutException,也有时后台不报错前端显示黑屏
在这里插入图片描述
查了下时文件流输出时间太长被tomcat拦截了,默认20s

2. 部署到tomcat打成war包的解决办法

直接修改tomcat配置文件server.xml
之前:

<Connector port="8083" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

修改后

<Connector port="8083" protocol="HTTP/1.1"
               connectionTimeout="20000"
			   disableUploadTimeout="false"
               redirectPort="8443" />

disableUploadTimeout="false"只把读写连接的超时限制取消了
或者增加连接生存时间
keepAliveTimeout=“100000”

实测有用

3. jar包运行解决办法

配置文件中加参数:

server:
  port: 9999
  # server端的socket超时间(毫秒),使用值-1表示没有(即无限)超时,默认值为60000(即60秒)
  # Tomcat附带的标准server.xml将此值设置为20000(即20秒),除非disableUploadTimeout设置为false,否则在读取请求正文(如果有)时也会使用此超时
  connection-timeout: 80000
  disableUploadTimeout: false

版权声明:本文为qq_35456400原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。