[스프링] 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