Feign远程调用超时问题
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远程调用超时问题的更多相关文章
- SpringCloud(二) - Eureka注册中心,feign远程调用,hystrix降级和熔断
1.项目模块介绍 2. 父项目 主要依赖 spring-cloud 的 版本控制 <properties> <!-- springCloud 版本 --> <scd.ve ...
- Feign远程调用 (介绍与使用)
Feign远程调用 Feign是代替RestTemplate进行远程调用的组件,避免了RestTemplate手写复杂的url容易出错的问题,并提高代码的可读性 使用Feign步骤 1)引入依赖 哪个 ...
- Feign远程调用
有关微服务中,服务与服务如何通信,我已经给大家介绍了Ribbon远程调用的相关知识,不知道大家有没有发现Ribbon的问题呢? Ribbon的问题 在Ribbon中,如果我们想要发起一个调用,是这样的 ...
- springcloud系列五 feign远程调用服务
一:Feign简介 Feign 是一种声明式.模板化的 HTTP 客户端,在 Spring Cloud 中使用 Feign,可以做到使用 HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完 ...
- 【SpringCloud】(二)Eureka注册中心和Feign远程调用
1 SpringCloud 核心 SpringCloud基于HTTP协议,这是和Dubbo最本质的区别,Dubbo的核心是RPC(远程方法调用) Eureka:注册中心 Ribbon:客户端负载均衡 ...
- feign远程调用出错
如果你传递的参数,比较复杂时,默认会采用POST的请求方式. 传递单个参数时,推荐使用@PathVariable,如果传递的单个参数比较多,这里也可以采用@RequestParam,Feign接口中不 ...
- feign远程调用接口报空指针
今天对feign接口进行转移的时候再次启动一直报空指针,找了好久试了好多次才发现是没有对feign接口加注解 请一定要记得加自动注入的注解啊啊啊啊啊啊!!!!!!!
- Feign远程调用源码阅读
- spring cloud eureka + feign,api远程调用
网上教程不少,有些就是复制粘贴,不结合实际生产. eureka不再阐述. 一般正常开发会有多个工程,且多个module. 我的习惯是: eureka server.权限.config.gateway ...
- SpringCloud使用Nacos服务发现实现远程调用
本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo. 1 Nacos 关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下. ...
随机推荐
- 标题:在Godot中使用Node2D创建自定义的Label
在Godot游戏引擎中,我们经常需要在游戏中显示文本信息.通常,我们可以使用Label节点来实现这一点.但是,在某些情况下,你可能希望更灵活地控制文本的显示和样式.在本篇博客中,我们将学习如何通过使用 ...
- Jmeter插件PerfMon Metrics Collector安装使用及报错解决
Jmeter作为一个轻量级的性能测试工具,开源.小巧.灵活的特性使其越来越受到测试人员喜爱.在实际的 项目中,特别是跨地区项目,排除合作方指定要求使用Loadrunner作为性能测试工具外,Jmete ...
- MindSponge分子动力学模拟——计算单点能(2023.08)
技术背景 在前面的几篇文章中,我们分别介绍了MindSponge的软件架构.MindSponge的安装与使用和如何在MindSponge中定义一个分子系统.那么就像深度学习中的损失函数,或者目标函数, ...
- 树状数组复习 leetcode 307
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...
- 使用TorchLens可视化一个简单的神经网络
TorchLens:可用于可视化任何PyTorch模型,一个包用于在一行代码中提取和映射PyTorch模型中每个张量运算的结果.TorchLens功能非常强大,如果能够熟练掌握,算是可视化PyTo ...
- 彻底解决Chrome“请停用以开发者模式运行的扩展程序”提示(亲测整合)
本站有大佬已写较全的解决方案(修改dll文件法) 原文链接 但是本人Chrome76版本不适用,匹配不到提示语,在知乎中找到修改注册表的方法可以解决 原文链接 最后附上一个谷歌访问助手吧 链接: ht ...
- .NET Core使用SkiaSharp快速生成二维码( 真正跨平台方案)
前言 在.NET 6之前我们一直是使用QRCoder来生成二维码(QRCoder是一个非常强大的生成二维码的组件,用到了System.Drawing.Common 包),然后从.NET 6开始,当为非 ...
- Go with Protobuf
原文在这里. 本教程为 Go 程序员提供了使用Protocol buffer的基本介绍. 本教程使用proto3向 Go 程序员介绍如何使用 protobuf.通过创建一个简单的示例应用程序,它向你展 ...
- Pricing
Skip to main content Site Navigation Research Product Developers Safety Company Search Pricing Sim ...
- 研发三维GIS系统笔记/实现wgs84投影-002
四叉树代码修改完善 原来的代码中,没有使用投影转换,直接使用的是世界坐标(单位是米), CELLQuadTree::CELLQuadTree( CELLTerrainInterface* pInter ...