[英]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.