首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Resilience4j重试-内存消耗

Resilience4j重试-内存消耗
EN

Stack Overflow用户
提问于 2021-09-29 03:59:11
回答 1查看 54关注 0票数 0

我使用的是Spring Boot2.x的resilience4j,使用重试和断路器模块对内存和cpu有什么影响?

另外,如果我有2000个事件/秒,每个有效负载大约10Mb,并且我将重试的等待时间保持为15秒,指数回退倍数为2,那么内存会有什么影响?我有8 8Gb的应用程序内存

EN

回答 1

Stack Overflow用户

发布于 2021-09-29 19:41:15

最好的方法是使用像VisualVM这样的配置文件监控您的应用程序。然后你就可以知道瓶颈在哪里了。

我知道有一件事很重要,那就是在哪里创建断路器实例。最后,会有一个收集器删除未使用的实例。但是在您的例子中,最好不要将断路器的创建放在像here这样的get方法上

代码语言:javascript
复制
@Service
public static class DemoControllerService {
    private RestTemplate rest;
    private CircuitBreakerFactory cbFactory;
    public DemoControllerService(RestTemplate rest, CircuitBreakerFactory cbFactory) {
        this.rest = rest;
        this.cbFactory = cbFactory;
    }
    public String slow() {
        return cbFactory.create("slow").run(() -> rest.getForObject("/slow", String.class), throwable -> "fallback");
    }
}

但是在构造函数上创建断路器。

代码语言:javascript
复制
@Service
public class DemoControllerService {
    private RestTemplate restTemplate = new RestTemplate();
    private CircuitBreakerFactory circuitBreakerFactory;
    private CircuitBreaker circuitBreaker;

    @Autowired
    public DemoControllerService(CircuitBreakerFactory circuitBreakerFactory) {
        this.circuitBreakerFactory = circuitBreakerFactory;
        this.circuitBreaker = circuitBreakerFactory.create("circuitbreaker");
    }

还讨论了为每个host设置一个断路器。您可以做的另一件事是自己执行remove the instance of the Registry,而不是等待断路器组件将来再执行它。

代码语言:javascript
复制
registry.remove(circuitBreakerName);

Here也是关于清理注册表内存的讨论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69370229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档