springcloud org.apache.catalina.connector.ClientAbortException: java.io.IOException

摘要:
今天产品测试同事在测试平台上测出了一个bug。就是在学习项目中添加一场考试的时候,添加不成功。产品的技术栈是springcloud,在网管gateway中有各个子服务的路由转发,这里是前端跟后端建立的连接,如果gatewaay超时,则会响应给前端504。在微服务中远程调用都是基于ribbon进行http请求调用的,所以在服务消费方添加了如下配置,设置超时时间:ribbon:ReadTimeout:60000ConnectTimeout:60000再次调用就Ok了。当然,服务提供方首先要保证自己提供的接口业务处理时长不能过长。

今天产品测试同事在测试平台上测出了一个bug。就是在学习项目中添加一场考试的时候,添加不成功。

于是我先去查看考试微服务的报错信息,并在本地环境复现,确实存在这样的bug,如下:

springcloud org.apache.catalina.connector.ClientAbortException: java.io.IOException第1张

因为该接口是提供给另外一个服务调用的,所以初步判断是接口业务逻辑处理时间长导致的超时。

产品的技术栈是springcloud,在网管gateway中有各个子服务的路由转发,这里是前端跟后端建立的连接,如果gatewaay超时,则会响应给前端504。但这里前端响应的是后端提供的错误码。

所以应该是服务消费方出了问题,查看服务消费方的日志,如下:

springcloud org.apache.catalina.connector.ClientAbortException: java.io.IOException第2张

确实显示的也是请求超时问题。

在微服务中远程调用都是基于ribbon进行http请求调用的,所以在服务消费方添加了如下配置,设置超时时间:

ribbon:
  ReadTimeout: 60000
  ConnectTimeout: 60000

再次调用就Ok了。

当然,服务提供方首先要保证自己提供的接口业务处理时长不能过长。

减少处理时长可以有如下常用方法:

  • 如果有多个sql需要执行,想办法整成一个sql,减少跟数据库的交互;
  • 对应的sql也需要加上需要的索引,减少sql执行时长;
  • 比较耗时的业务逻辑,又不需要响应给服务消费方,可以采用异步io非阻塞的办法,即开始新线程进行处理。

免责声明:文章转载自《springcloud org.apache.catalina.connector.ClientAbortException: java.io.IOException》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PowerDesigner中CDM和PDM如何定义外键关系人脸识别评价算法指标下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

解决cookie跨域访问

如果用户在登录(记录用户上下文信息)后在浏览器客户端上写入cookie,则只能访问与创建cookie的页面相同目录或创建cookie页面的子目录中的网页。这是因为cookie可以由其路径下的页面访问。然后,如果您想在域a中生成一个可以被域a和域B访问的cookie,则需要将cookie的域设置为.test.com;...

vue cli3.0 打包静态文件目录的配置

默认情况下,vuecli3.0打包生成的文件也会作为cli2.0在dist目录中生成,但css、js和img等静态文件不会像cli2.0那样放在静态文件夹中。您需要修改vue.config.js:module的几个配置变量。exports={publicPath:“dist”,//输出文件目录lintOnSave:false,//保存时eslint检查ass...

如何在linux下安装idea

[通过正式安装包安装]http://www.jetbrains.com/在官方网站上下载相应版本。终极旗舰社区版本,将其解压缩到本地对应目录,然后执行/idea.sh命令。安装后,可以在启动程序中找到创意图标。...

oracle 在sql中显示blob的字符串

最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了。以上只是自己做了个简单的处理,相信肯定有更好的方法,希望大家帮忙,但是感觉dbms_lob函数下的方法真的很好用。...

ubuntu的ufw如何开放特定端口?

ubuntu的ufw是如何打开特定端口的?1.安装sudoapt getinstallufw2.启用sudoufwenable以默认情况下禁用外部访问sudoufwdefaultdeny 3.查看状态sudoufwstatus4.添加端口sudoufwallow80805。删除端口sudoufwdeleteallow808080806。允许特定源的IP地址从...