-
“Thread Pool Hell” 발생원인TIL (Today I Learned) 2024. 1. 16. 16:50
#대용량 트래픽 발생 원인
HTTP Request와 Thread Pool
HTTP Request가 증가함에 따라 서버에는 이러한 요청을 처리하기 위해 Thread Pool과 Queue가 사용됩니다. 각 Request는 Queue를 통해 Thread Pool에 할당되며, Thread Pool은 시스템에서 사용 가능한 Thread의 개수를 제한하게 됩니다. 그런데, 이러한 Thread의 개수는 무한하지 않으며, 시스템의 성능과 자원에 따라 한계가 있습니다.
Thread Pool Size 초과와 대기 큐
만약 동시에 발생한 HTTP Request가 Thread Pool Size를 초과한다면, 초과된 요청은 큐에 대기하게 됩니다. 즉, 서버가 동시에 처리 가능한 Request의 한계를 넘어선 경우, 초과된 Request들은 큐에서 기다려야 합니다.
Thread의 한계와 성능 할당
Thread의 개수가 무한하지 않기 때문에, 시스템은 성능에 따라 할당된 Thread Pool Size를 제한합니다. 이로써 서버가 동시에 처리할 수 있는 Request의 수가 한정되며, 초과된 Request는 대기 큐에서 대기하게 됩니다.
Thread Pool Hell과 지연 시간의 증가
그렇게 Thread pool size를 초과하는 대량의 트래픽이 계속해서 발생하면, 서버의 응답 지연시간은 기하급수적으로 증가하게 됩니다. 이러한 현상을 우리는 "Thread Pool Hell"이라 부르며, 이는 서버가 감당할 수 있는 Request 처리 능력을 초과하여 발생하는 현상입니다.
이러한 Thread Pool Hell을 효과적으로 관리하고 대응하기 위해서는 적절한 Thread Pool Size의 설정, 효율적인 대기 큐 관리, 그리고 대용량 트래픽을 예측하여 시스템을 최적화 하는 등의 전략이 필요합니다. 이를 통해 서버는 안정적이고 효율적으로 대용량 트래픽을 처리할 수 있게 됩니다.
'TIL (Today I Learned)' 카테고리의 다른 글
WebRTC란? (0) 2024.01.16 LexoRank에 대하여**** (1) 2024.01.10 메모장-LexoRank (0) 2024.01.05 내용 꼭 정리하기*****//NestJS와 TypeORM에서 Entity 생성 및 저장 시 주의사항 (0) 2024.01.02 NestJS_온라인 공연 예매 서비스 프로젝트_entity 관계 설정 수정 (0) 2023.12.29