반응형

thread-pool 2

CPU는 남는데 왜 요청은 밀릴까?

트래픽이 많은 서비스를 운영하다 보면, 다음과 같은 상황을 한 번쯤은 겪게 됩니다.CPU 사용률은 높지 않고메모리도 여유 있어 보이는데요청 응답이 점점 느려지거나 타임아웃이 발생한다이 상황에서 가장 흔한 반응은 이것입니다.“리소스는 남아 있는데, 왜 느리지?”이 글에서는 이 현상을 리소스 부족 문제가 아니라 Thread Pool이라는 동시성 한계 관점에서 설명합니다.CPU 여유 ≠ 처리 여유CPU 사용률이 낮다는 것은,“지금 실행 중인 스레드가 CPU를 다 쓰지 않고 있다”는 의미일 뿐입니다.하지만 요청을 처리하기 위해서는, CPU 이전에 반드시 필요한 자원이 있습니다.바로 실행 가능한 Thread입니다.Thread Pool이 가득 차 있으면, CPU가 아무리 남아 있어도 새로운 요청은 실행되지 못하고 ..

항상은 아니고, 가끔만 터지는 타임아웃의 정체

트래픽이 많은 서비스를 운영하다 보면, 가장 판단하기 어려운 유형의 문제가 있습니다.“항상 터지는 것도 아니고, 가끔씩만 타임아웃이 발생한다.”장애라고 부르기엔 애매하고, 그렇다고 무시하기엔 계속 신경 쓰입니다.특정 시간대에만일부 요청에서만잠깐 발생했다가 다시 정상으로 돌아옴이런 문제는 재현도 어렵고, 원인을 특정하기도 어렵습니다.이 글에서는 이 현상을 불안정한 시스템 문제가 아니라시스템이 가진 동시성 한계가 드러나는 구조적 현상으로 바라봅니다.간헐적 타임아웃이 보일 때의 공통적인 신호이 유형의 타임아웃에는 반복해서 나타나는 특징이 있습니다.CPU와 메모리는 여유 있어 보인다Pod 수를 늘려도 완전히 사라지지 않는다평균 응답 시간(p50)은 정상이다p95, p99 같은 tail latency만 튄다이 조..

반응형