[스프링] Hystrix 스레드 풀 및 세마포어 제어
스프링 애플리케이션에서 Hystrix를 사용할 때, 장애 내성을 향상시키기 위해 스레드 풀과 세마포어를 효과적으로 제어해야 합니다. 이 블로그 포스트에서는 스프링에서 Hystrix 스레드 풀과 세마포어를 어떻게 제어하는지에 대해 다루겠습니다.
Hystrix 스레드 풀 제어
Hystrix는 기본적으로 각각의 커맨드 실행을 별도의 스레드로 처리합니다. 이때, ThreadPool을 설정하여 이러한 스레드들을 관리할 수 있습니다. 스프링에서는 HystrixThreadPoolProperties
클래스를 사용하여 이러한 설정을 할 수 있습니다.
@Configuration
public class HystrixConfiguration {
@Bean
public HystrixThreadPoolProperties myCommandThreadPoolProperties() {
return HystrixThreadPoolProperties.Setter().withCoreSize(10).withMaxQueueSize(100).withQueueSizeRejectionThreshold(10);
}
}
이렇게 하면 “myCommand” 커맨드의 스레드 풀이 10개의 코어 스레드와 100의 큐 크기를 가지며, 큐 거부 임계값이 10으로 설정됩니다.
Hystrix 세마포어 제어
Hystrix는 기본적으로 기본 세마포어 크기는 Integer.MAX_VALUE(2147483647)로 설정되어 있습니다. 이를 제어하기 위해서는 HystrixCommandProperties
클래스를 사용하여 설정할 수 있습니다.
@Configuration
public class HystrixConfiguration {
@Bean
public HystrixCommandProperties.Setter myCommandProperties() {
return HystrixCommandProperties.Setter().withExecutionIsolationSemaphoreMaxConcurrentRequests(100);
}
}
이렇게 하면 “myCommand” 커맨드의 최대 동시 요청을 100개로 제한할 수 있습니다.
이제 스프링에서 Hystrix의 스레드 풀 및 세마포어를 효과적으로 제어하는 방법을 알아보았습니다. 이를 통해 극단적인 상황에서의 시스템 안정성을 높일 수 있습니다.
참고자료: Spring Cloud Netflix - Hystrix