Skip to Content
Suffering builds character
아카이브23.스프링 웹플럭스Java NIO, 네티논블로킹 소켓8.논블로킹 주의할 점

8.논블로킹 주의할 점

논블로킹 IO 메커니즘이 블로킹 IO에 비해 모든 상황에 적합한 것은 당연히 아님

1. 논블로킹 메커니즘의 특징

논블로킹은 하나의 스레드로 둘 이상의 요청 처리를 수행할 수 있다는 이점을 통해 IO 바운드를 줄여주는 거지, CPU 바운드를 줄여주진 않음

따라서 다음과 같은 상황에서는 논블로킹을 사용하는 것이 적합하지 않을 수 있음

1-1. 요청 - 응답 과정 사이에 블로킹 IO가 포함되어 있는 경우

이 경우에는 결국 블로킹 IO가 발생하는 지점에서 스레드가 차단되어버리기 때문에 논블로킹의 이점을 발휘하기 어려움

1-2. CPU를 많이 사용하는 작업이 포함되어 있을 경우

이 경우에는 성능에 있어서 블로킹 방식보다 오히려 악영향을 줄 수 있음

왜냐하면 IO 작업이 아닌 CPU를 많이 사용하는 복잡한 계산을 요청받은 경우에는 다른 클라이언트의 요청들을 처리하는 시간이 그만큼 늦어지기 때문

따라서 이런 상황에서는 복잡한 처리만을 수행하는 별도의 스레드 풀을 두고 해당 스레드 풀의 스레드를 통해 처리하는 방법을 활용할 수도 있음

Last updated on