【ZUUL2踩坑】题三:Ribbon被迫读取一个1.6G的配置文件

目录

一、问题背景

二、问题分析


一、问题背景

Ribbon对于部分关键配置的读取是没有躺平策略的,获取不到动态配置时可能会将后端服务器列表全部下掉。

如果刚好碰到Properties字符集操作不当,引起配置文件膨胀到1.6G,它根本读取不完这个配置文件,在这种特殊情况下,Ribbon还能正常转发请求到下游吗?

答案是能,但是只能转发一点点。

二、问题分析

先上图(这种情况下,服务器会呈现怎样的现象):

CPU和内存的情况:

 JAVA堆的情况:

服务器的这种现象是如何引起的?

Ribbon会不断的尝试加载配置文件,读到了乱码且很大的数据行时,它会读不下去,同时,他会会不断的占用资源,不断申请内存,最后出现OOM。

对于动态配置来说,提供给Ribbon使用的上游的数据是正常的,因为它能读取到;而对于下游的数据,Ribbon会认为拿到的动态配置就是空,下游的listOfServers就会更新为空,从而出现故障。

举个例子:

serviceA.ribbon.listOfServers=127.0.0.1\:80
route.default.serviceName=我是一段乱码并且很大的中文
serviceB.ribbon.listOfServers=127.0.0.1\:8080

properties实际上是按行读取的,在这种情况下,ServiceB无法提供服务,在Zuul中Ribbon将会把ServiceB后端服务器列表置为空,而ServiceA是能够正常提供服务的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值