문제 발생
메모리 eviction 문제가 나타난 입력, 직전 동작과 실제 결과를 함께 적습니다. 예를 들어 “가끔 실패”라고 쓰는 대신 정상 사례와 실패 사례를 하나씩 두고, 두 사례에서 달라진 version·설정·데이터를 표로 남깁니다.
| 사례 | 입력과 상태 | 결과 |
|---|---|---|
| 정상 | 가장 작은 정상 조건 | 기대한 결과 |
| 실패 | 한 조건만 달라진 재현 | 실제 오류·값 |
원인 분석
orchestrator eviction은 application OOM과 다르며 node pressure, request·limit과 QoS 우선순위를 함께 확인해야 합니다.
메모리 문제는 한 시점의 사용률이 아니라 시간에 따른 할당률, 작업 종료 뒤 기준선과 참조 경로를 봐야 합니다. heap과 native·buffer·파일 캐시를 분리하면 제한을 늘려야 하는지, 참조를 끊어야 하는지가 달라집니다. provider event, flow log, DNS 결과, health, 자원 사용량과 애플리케이션 trace를 계층별로 확인한다. 정상과 실패를 번갈아 실행하고, 이 원인이 맞다면 달라져야 할 값부터 확인합니다. 관련 없는 로그와 설정을 한꺼번에 바꾸지 않습니다.
해결 방안
반복 횟수, 컬렉션, queue와 cache에 상한을 두고 상태를 만든 소유자가 listener·timer·handle까지 정리하게 합니다. 메모리 제한 상향은 원인 수정 뒤의 안전 여유로만 사용합니다. blast radius를 제한하고 immutable 변경, 선언형 구성, readiness와 자동 rollback 기준을 둔다.
수정 전 실패 사례가 사라지고 기존 정상 사례가 유지돼야 합니다. 장애 주입, zone 실패, 확장, 인증서·DNS 전환과 복구 훈련으로 목표 RTO/RPO를 검증한다. 동일 부하를 충분히 오래 유지한 뒤 GC 이후 live set과 RSS 기준선, allocation rate, 처리량과 pause가 함께 안정되는지 확인합니다. 가장 작은 실패 입력은 자동 테스트나 실행 가능한 점검 명령으로 남깁니다.
공식 문서와 적용 범위
문서의 기본값과 동작은 version에 따라 달라질 수 있습니다. 현재 version, 실제 적용 설정, 자원 제한과 운영 환경에서 다시 확인합니다.