springcloud线上发布超时之feign(ribbon饥饿加载)
springcloud线上发布超时系列文章:
springcloud线上发布超时之feign(ribbon饥饿加载)
springcloud线上发布超时方案之终极杀招:预热(测试用例)
> 在高并发情况下发布应用时,经常会发现监控中有很多超时报错或者断路器打开,下图中可以看到监控情况,测试时也会偶现第一次feign调用出错,第二次就会恢复正常。

问题分析
大家都知道,这里feign底层是集成的ribbon,这里ribbon也会有http连接池,这里的连接池是长连接,定时初始化一批并销毁旧连接,这里还包括一些上下文需要初始化,但是在容器初始化好时,ribbon底层的client是未初始化的,当第一次调用时,有一个初始化过程会导致超时,一般情况下会说需要调整超时时间,但是在电商高并发情况下,这里肯定时不现实的,响应请求都需要ms级别。
解决方案
ribbon饥饿加载
这里可以通过配置ribbon饥饿加载来减少出错次数,如下:
ribbon:
  # 饥饿加载
  eager-load:
    # 是否开启饥饿加载
    enabled: true
    # 饥饿加载的服务
    clients: demo-goods,demo-product
这里为什么说不能完全解决呢?因为在发布时流量切换的瞬间,流量太大,并不是仅仅ribbon需要初始化,hystrix、web容器线程池等都需要初始化或者扩容,这里也需要耗时,所以这里的饥饿加载仅仅只是做到了发布时减少错误数。
zuul饥饿加载
网关作为对外请求的入口,zuul内部使用Ribbon调用其他服务,Spring Cloud默认在第一次调用时懒加载Ribbon客户端。zuul同样需要维护一个相对的子应用环境的上下文,所以也需要启动时饥饿加载。
zuul:
  ribbon:
    eager-load:
      enabled: true
												
											springcloud线上发布超时之feign(ribbon饥饿加载)的更多相关文章
- springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin
		
相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新 ...
 - android ListView的上部下拉刷新下部点击加载更多具体实现及拓展
		
android ListView的上部下拉刷新下部点击加载更多具体实现及拓展 ListView下拉刷新,上拉自动加载更多 下拉刷新以及加载更多
 - 使 IIS 6.0 可以在 64 位 Windows 上运行 32 位应用程序 试图加载格式不正确的程序。
		
原文 使 IIS 6.0 可以在 64 位 Windows 上运行 32 位应用程序 试图加载格式不正确的程序. win7 64位操作系统上边运行IIS网站应用的时候,提示错误"试图加载格式 ...
 - []转帖]linux 上修改了nginx.conf 怎么重新加载配置文件生效
		
linux 上修改了nginx.conf 怎么重新加载配置文件生效 https://www.cnblogs.com/zhuyeshen/ 步骤如下先利用/usr/local/nginx/sbin/ng ...
 - 今天,你遇到redis线上连接超时了吗?
		
一封报警邮件,大量服务节点 redis 响应超时. 又来,好烦. redis 响应变慢,查看日志,发现大量 TimeoutException. 大量TimeoutException,说明当前redis ...
 - Excel催化剂开源第7波-VSTO开发中Ribbon动态加载菜单
		
在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA.ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体 ...
 - 微信中h5页面用window.history.go(-1)返回上一页页面不会重新加载问题
		
问题描述: 在实际开发中遇到这样一个问题,业务需求涉及到返回上一页问题,第一时间想到了window.history.go(-1)方法,这样做本身没有任何问题,但是在微信中,安卓手机还好返回上一页页面会 ...
 - 从整体上理解进程创建、可执行文件的加载和进程执行进程切换,重点理解分析fork、execve和进程切换
		
学号后三位<168> 原创作品转载请注明出处https://github.com/mengning/linuxkernel/ 1.分析fork函数对应的内核处理过程sys_clone,理解 ...
 - 关于iOS11上MJRefresh tabview刷新后,重新加载另一组数据, 回不到顶部或者头尾显示混乱等问题解决
		
MJRefresh在iOS11上存在很多bug 比如在iphoenx上首尾仍会显示的问题 刷新数据后tableview置顶不上去等问题 虽然官方给出了适配方案 但是问题还没有的到解决 比如tabvi ...
 - Jenkins集成Docker实现镜像构建和线上发布
		
原文地址:http://www.cnblogs.com/keithtt/p/6410229.html 大概过程如下图: 由于需要用到docker打包镜像,jenkins宿主机上需要安装docker,原 ...
 
随机推荐
- NXP i.MX 8M Plus工业核心板硬件说明书( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)
			
1 硬件资源 创龙科技SOM-TLIMX8MP是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 + 单核ARM Cortex-M7异构多核处理器设计的高端 ...
 - 在OwinSelfHost项目中获取客户端IP地址
			
在OwinSelfHost项目中,获取客户端的IP地址可以通过以下方法获得: base.Request.GetOwinContext().Request.RemoteIpAddress 创建一个Owi ...
 - ISCTF2023
			
ISCTF 2023 Misc 签到题 公众号发送:小蓝鲨,我想打ctf ISCTF{W3lcom3_7O_2023ISCTF&BlueShark} 你说爱我?尊嘟假嘟 你说爱我替换.,真嘟替 ...
 - Mac 每次都要执行source ~/.bash_profile 配置的环境变量才生效
			
自己在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效.需要重新执行 : $source ~/.bash_profile 发现zsh加载的是 ~/.zshrc文件,而 ...
 - c++临时对象导致的生命周期问题
			
对象的生命周期是c++中非常重要的概念,它直接决定了你的程序是否正确以及是否存在安全问题. 今天要说的临时变量导致的生命周期问题是非常常见的,很多时候没有一定经验甚至没法识别出来.光是我自己写.rev ...
 - C#-WPF初学
			
1.新建一个WPF的应用: 2.拖拽控件并布局好: [小技巧]选中控件,点击"回形针"即可让该控件跟随窗口自动调整大小: 3.编写代码: 主程序代码如下: namespace Wp ...
 - 解决方案 | Python中安装pix2tex latex ocr出现报错Cannot mix incompatible Qt library (6.6.2) with this library (6.7.2)
			
一.问题 Python中安装pix2tex latex ocr出现报错Cannot mix incompatible Qt library (6.6.2) with this library (6.7 ...
 - 如何删除Git中缓存的用户名和密码
			
昨天在上传代码的时候提示输入用户名密码,结果输错了3次就没有提示框了,就一直报错(身份验证失败),没办法提交代. 在使用git的过程中,我们也会经常遇到以前保存在git的用户名密码忘记了,或者不用了. ...
 - django python 获取当天日期
			
from datetime import date today = date.today() print(today) 在Python中,你可以使用datetime模块来获取当前日期.具体获取当前日期 ...
 - CF1883B Chemistry 题解
			
原题传送门 思路: 如"aba","abba"这样的回文字符串, 每个字符的出现次数有以下两种情况: 1:全部是偶数(abba) 2:只有一个为奇数(aba) ...