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

  • Post author:
  • Post category:java




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 版权协议,转载请附上原文出处链接和本声明。