簡體   English   中英

Resilience4j 重試 - Memory 消耗

[英]Resilience4j Retry - Memory consumption

我正在使用帶有 Spring Boot 2.x 的彈性 4j 在 memory 和 cpu 上使用重試和斷路器模塊有什么影響?

另外,如果我有 2000 個事件/秒傳入每個有效負載大約 10Mb,並且我將重試的等待持續時間保持為 15 秒,指數退避乘數為 2,那么 memory 的影響是什么? 我有 8Gb 的應用程序 memory

最好的方法是使用 VisualVM 之類的配置文件監控您的應用程序。 然后你就可以知道瓶頸在哪里了。

我知道重要的一件事是創建斷路器實例的位置。 最后有一個收集器可以刪除未使用的實例。 但在您的情況下,不要將斷路器的創建放在 get 方法上,就像這里

@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");
    }
}

但是在構造函數上創建斷路器。

@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");
    }

也有討論為每個主機放置一個斷路器。 您可以做的其他事情是自己刪除注冊表的實例,而不是等待將來的斷路器組件羅馬它。

registry.remove(circuitBreakerName);

這里還有一個關於清理注冊表 memory 的討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM