Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

14장. Kafka 가상 메모리 튜닝

Kafka는 운영체제의 페이지 캐시(Page Cache) 를 적극 활용해 디스크 I/O 성능을 높이는 구조입니다. 따라서 가상 메모리와 스와핑(Swapping) 설정은 Kafka 성능에 매우 큰 영향을 미칩니다.


14.1 스와핑(Swapping)이란?

운영체제에서 메모리가 부족하면, 자주 사용하지 않는 데이터를 디스크의 스왑 공간(swap area) 으로 옮겨 RAM 공간을 확보합니다. 이 과정을 스와핑(swapping) 이라고 합니다.

마치 방이 좁아서 자주 안 쓰는 짐을 창고(디스크)로 보내는 것과 비슷한 개념입니다.


14.2 Kafka에서 스와핑이 문제가 되는 이유

Kafka는 실시간 메시지 처리 시스템입니다. 빠른 응답과 낮은 지연 시간이 핵심인데, 스와핑이 발생하면 다음과 같은 문제를 일으킬 수 있습니다:

문제 상황영향
페이지 캐시가 줄어듦디스크 쓰기/읽기 성능 저하, 처리량 감소
Kafka 스레드가 스왑됨메시지 처리 지연, 응답 시간 불안정
스와핑이 반복됨전체 시스템 성능 급락 (Thrashing 현상 발생)

14.3 vm.swappiness란?

vm.swappiness는 Linux 커널 파라미터로, 운영체제가 메모리가 부족할 때 스왑 공간을 얼마나 적극적으로 사용할지를 결정합니다.

값이 낮을수록 실제 RAM을 더 많이 활용하고, 스왑 사용을 줄입니다.

설정 방법 (임시 적용)

sudo sysctl -w vm.swappiness=1

설정 방법 (영구 적용)

echo "vm.swappiness = 1" | sudo tee -a /etc/sysctl.conf

14.4 설정값의 의미와 Kafka 권장값

설정값의미
0절대 스왑 사용 안 함. RAM 부족 시 OOM 위험 높음
1거의 스왑을 사용하지 않음. Kafka 권장 설정
60기본값. 일반적인 Linux 서버 운영 환경
100가능한 많이 스왑을 사용함

Kafka에서는?

  • vm.swappiness = 0은 OOM(Out of Memory) 가능성이 높아 위험할 수 있음
  • vm.swappiness = 1은 스왑을 거의 사용하지 않으면서, 시스템이 완전히 RAM을 소진했을 때만 최소한으로 스왑을 활용함

✅ 따라서 Kafka 운영 환경에서는 다음과 같은 설정이 권장됩니다:

vm.swappiness = 1

안정적인 처리 속도와 디스크 I/O 성능 유지를 위해 최소 스왑 정책이 가장 바람직합니다.