컨슈머 랙과 처리량 튜닝
랙이란
| 항목 | 값 |
|---|---|
| 파티션 최신 오프셋 | 1,000,000 |
| 컨슈머 커밋 오프셋 | 980,000 |
| lag | 20,000건. 밀린 양이다 |
- 절대값보다 추세가 중요하다. 증가 중이면 소비 속도가 생산 속도보다 느리다는 뜻
- 건수 대신 시간으로 환산(몇 분치 밀렸나)하면 서비스 영향 판단이 쉽다
증상별 처방
| 증상 | 원인 | 처방 |
|---|---|---|
| 특정 파티션만 랙 | 핫 키 편중 | 파티션 키 재설계 |
| 전 파티션 랙 증가 | 소비 처리 자체가 느림 | 하류 IO 배치화, 파티션과 컨슈머 동시 증설 |
| 랙이 톱니 모양 반복 | 리밸런싱 반복 | 한 번에 가져오는 건수 축소, 폴 간격 조정 |
| CPU는 한가한데 느림 | IO, 커밋 대기 | 배치 커밋, 프리페치 조정, 병렬 워커 |
실무 포인트
- 컨슈머 수의 상한은 파티션 수다. 인스턴스만 늘려도 처리량은 오르지 않는다
- 한 건씩 DB에 쓰는 구조를 배치 삽입으로 바꾸면 수 배 개선되는 경우가 많다
- 폴 루프 안에서 오래 걸리는 작업을 하면 리밸런스가 유발되고 중복 처리가 늘어난다
- 경보는 랙 임계치와 증가율을 함께 걸어야 서서히 쌓이는 누적과 급증을 모두 잡는다