1.问题概述

  • 上图的场景,每次重启项目后openFeign都会报一个超时异常,异常信息如下

2.为什么会产生这个异常?

  • 当项目刚启动时,数据库连接池的中的连接并不会创建;第一次请求的时候才会初始化各种池,连接准备等工作;所以导致了第一次初始化建立连接时间很长.feign觉得这个远程调用很久没有返回所以就超时了.

    feign默认超时等待是1s.如果1s没有返回数据,会重试几次;重试几次还没返回数据,就报错读取超时异常
思考一个问题:为啥Feign要设置超时时间呢?
  • 拿上图来说如果feign不设置超时时间,那么一旦商品微服务一致没有给订单微服务返回数据,订单微服务就会一直占用着一个线程;并且我们的系统远程调用有很多,如果是大量来了,很容易导致整个线程资源被占用完了,直接导致整个系统雪崩

3.解决办法

方式1:在远程调用的接口参数上指定Request.Options options:超时时间

方式2:在调用方配置文件设置超时时间

feign:
client:
config:
qiuqiu: # 微服务客户端名
connectTimeout: 5000 # 连接超时时间(建立连接的时间)
readTimeout: 5000 # 读取超时时间(读取数据的时间)

方式3:方式2是可以解决的,但是怎么设置每个服务都要配置很麻烦,所以全局配置它来了!!!

  • 因为我项目中用的是nacos配置中心,所以我把这段配置加入到nacos配置中心进行管理
feign:
client:
config:
default: # 指定默认的配置,这样其他所有调用此服务的feign客户端配置都是这个配置
connectTimeout: 5000 # 连接超时时间(建立连接的时间)
readTimeout: 5000 # 读取超时时间(读取数据的时间)

  • 所以后面的服务我们不配置,则使用的是上面默认的,如果想单独配置,则直接在配置文件中配置即可

Feign远程调用超时问题的更多相关文章

  1. SpringCloud(二) - Eureka注册中心,feign远程调用,hystrix降级和熔断

    1.项目模块介绍 2. 父项目 主要依赖 spring-cloud 的 版本控制 <properties> <!-- springCloud 版本 --> <scd.ve ...

  2. Feign远程调用 (介绍与使用)

    Feign远程调用 Feign是代替RestTemplate进行远程调用的组件,避免了RestTemplate手写复杂的url容易出错的问题,并提高代码的可读性 使用Feign步骤 1)引入依赖 哪个 ...

  3. Feign远程调用

    有关微服务中,服务与服务如何通信,我已经给大家介绍了Ribbon远程调用的相关知识,不知道大家有没有发现Ribbon的问题呢? Ribbon的问题 在Ribbon中,如果我们想要发起一个调用,是这样的 ...

  4. springcloud系列五 feign远程调用服务

    一:Feign简介 Feign 是一种声明式.模板化的 HTTP 客户端,在 Spring Cloud 中使用 Feign,可以做到使用 HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完 ...

  5. 【SpringCloud】(二)Eureka注册中心和Feign远程调用

    1 SpringCloud 核心 SpringCloud基于HTTP协议,这是和Dubbo最本质的区别,Dubbo的核心是RPC(远程方法调用) Eureka:注册中心 Ribbon:客户端负载均衡 ...

  6. feign远程调用出错

    如果你传递的参数,比较复杂时,默认会采用POST的请求方式. 传递单个参数时,推荐使用@PathVariable,如果传递的单个参数比较多,这里也可以采用@RequestParam,Feign接口中不 ...

  7. feign远程调用接口报空指针

    今天对feign接口进行转移的时候再次启动一直报空指针,找了好久试了好多次才发现是没有对feign接口加注解 请一定要记得加自动注入的注解啊啊啊啊啊啊!!!!!!!

  8. Feign远程调用源码阅读

  9. spring cloud eureka + feign,api远程调用

    网上教程不少,有些就是复制粘贴,不结合实际生产. eureka不再阐述. 一般正常开发会有多个工程,且多个module. 我的习惯是: eureka server.权限.config.gateway ...

  10. SpringCloud使用Nacos服务发现实现远程调用

    本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo. 1 Nacos 关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下. ...

随机推荐

  1. 论文解读(TAMEPT)《A Two-Stage Framework with Self-Supervised Distillation For Cross-Domain Text Classification》

    论文信息 论文标题:A Two-Stage Framework with Self-Supervised Distillation For Cross-Domain Text Classificati ...

  2. 关于api数据接口应用

    在当今互联网时代,API数据接口应用已经成为各行各业不可替代的技术,它可以让开发者更加轻松地访问和使用各种功能和数据,从而提高开发效率和用户体验.下面就让我们来详细了解API数据接口应用的相关内容. ...

  3. QA|重写了元素定位后报错xx object has no attribute 'find_element'|网页计算器自动化测试实战

    代码如下: 1 # basepage.py 2 3 from selenium import webdriver 4 5 6 class BasePage(): 7 """ ...

  4. tomcat远程部署

    使用maven的插件对tomcat进行远程部署,大大降低了部署步骤,对于远程部署调试也有一定的帮助 要让maven对够进行远程部署,我们需要对tomcat进行配置,主要是配置tomcat-user.x ...

  5. C++ 对拍详解 和解读

    对拍是什么# ​对拍,是一个比较实用的工具.它能够非常方便地对于两个程序的输出文件进行比较,可以帮助我们实现一些自动化的比较输出结果的问题. ​众所周知,几乎每一道编程题目,都会有某种正解能拿到满分: ...

  6. MAC版本vmware无法识别虚拟机网卡适配器

    一.问题 莫名其妙的突然mac上的vmware无法识别网络适配器了 二.解决过程 1.重装vmware-无效 2.降级安装vmware-无效 3.安装pd虚拟机,并使用sudo命令启动-偶尔有效 4. ...

  7. 从零开始的Java编程:教你如何实现“超级马里奥”游戏!

    引言超级马里奥,这个名字对于游戏迷来说一定不陌生.它是一款经典的游戏系列,以一个勇敢的水管工人--马里奥为主角,讲述了他在蘑菇王国中的冒险故事.在这个充满挑战和刺激的游戏中,玩家需要控制马里奥跳跃.躲 ...

  8. Python 模块:创建、导入和使用

    什么是模块? 将模块视为代码库.模块是一个包含一组函数的文件,您想要在应用程序中包含这些函数. 创建一个模块 要创建一个模块,只需将要包含在其中的代码保存在扩展名为 .py 的文件中: 示例:将以下代 ...

  9. AtCoder Beginner Contest 321(ABC321)

    A. 321-like Checker 直接模拟. Code B. Cutoff 直接暴力枚举 \([0\sim100]\),每次把第 \(n\) 个数当作当前枚举的 \(i\),然后看看条件是否满足 ...

  10. dicker 常用命令(简洁版)