解决使用RestTemplate 日志中出现timerCache is above the warning threshold of 1000 with size xxx 警告

解决使用RestTemplate 日志中出现timerCache is above the warning threshold of 1000 with size xxx 警告

项目版本:springboot 1.5.2.RELEASE,springcloud Camden.SR5。某处业务中通过 RestTemplate 使用连接字符串url大量调用第三方服务进行数据同步,日志出现以下警告内容:
2021-09-09 12:11:41.973 WARN [resources-Executor-2] o.s.c.n.metrics.servo.ServoMonitorCache : timerCache is above the warning threshold of 1000 with size 1634.

2021-09-09 12:11:41.973 WARN [resources-Executor-2] o.s.c.n.metrics.servo.ServoMonitorCache : timerCache is above the warning threshold of 1000 with size 1635.

排查问题:
所涉及到的类:
在这里插入图片描述

首先找到日志打印的类:
在这里插入图片描述
再看下this.config.getCacheWarningThreshold() 在哪里:
在这里插入图片描述
分析问题:我的业务需要做大量的分页查询,只能将分页参数带在url中,每调用一次,由于url地址不同,每次都会执行this.timerCache.put(config, t); 这个map会越来越大,达到一定次数后就会超过cacheWarningThreshold的默认值1000,触发警告信息。
因此第一种解决方法就出来了,只要我们在配置netflix.metrics.servo.cacheWarningThreshold 为一个较大的值,自然就不会有警告信息打印出来。
以我的application-dev.yaml文件为例:
在这里插入图片描述

接下来再看下getTimer方法在哪里被调用:
在这里插入图片描述
在这里插入图片描述
分别在MetricsClientHttpRequestInterceptor、MetricsHandlerInterceptor类中用到了。在MetricsInterceptorConfiguration自动配置类中找到了RestTemplate相关内容:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以看到默认会启用该自动配置类,并将MetricsClientHttpRequestInterceptor
添加到RestTemplate的拦截器中。
因此第二种解决方法就是:设置spring.cloud.netflix.metrics.enabled:false。此种情况下不会自动配置该类,在不需要使用它的接口监控的时,可以在配置关闭该功能。
以我的application-dev.yaml文件为例:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值