TL;DR증상: 캠페인 발송이 10분+ 지속, 간헐적으로 40분 이상 지연. 고객 컴플레인 발생.원인:ClickHouse FINAL 남용 → 파티션 풀스캔 + 슬로우 쿼리 → 애플리케이션 스레드 고갈비즈니스 로직의 불필요한 PreCheck(N+1) 조회, Reader 페이징 오동작해결:ClickHouse에서 FINAL 제거·파티션 프루닝 유도타겟+회원정보를 한 번에 조인 조회, Reader를 “타겟 수 만큼만” 페이징결과: 최악 40m → 1m 20s, 10m+ 배치 0건, 대부분 ≤ 10s. 평균 5배 이상 개선배경고객사가 빠르게 늘며 안정적이던 발송 배치에 병목이 나타나기 시작했다. 다수 캠페인이 10분 이상 소요되었고, 간헐적으로 40분을 초과하는 타겟팅이 발생했다. 운영 안정성 저하로 고객사의 문..
- webhook문제가 간헐적으로 계~속 발생함- 모니터링 툴이 전무한 상황 일단 이걸 해결하고자함. - 특정시점에 발생하는 것을 확인함. - 간할적인 좀시상태도 생김보여지는 원인 - DB lock- Thread점유- CPU부하.. 로직을 잘모르니 시스템 메트릭을 분석해봐야함. 해결과정- Heap dump 분석, Thread 부하테스트 진행.. - Thread TIMED_WATING 발생이 대부분이므로 이부분을 중점적으로 확인. (lettuce-eventExecutorLoop... -> Redis문제자나?)1차 해결방법- 일단 간헐적으로 좀비상태가 되는 문제 해결책으로 문제생기면 server restart 방법을 채택 (근본적인 해결책은 아니지만)- 특정 시점 Thread Cnt가 기하 급수적으로 느는것..
연말 발송량이 많아지면서 발송처리 후 처리 작업을 위한 토픽의 컨슈머 랙이 40,000건 기준으로 6시간 이상 처리가 안되는 이슈가 생겨 처리가 필요해 보였음. 이 정도도 처리 못하는건 문제가 있다고 판단.해결 할 수 있는 방법이 몇 가지 있을듯?컨슈머 처리 속도를 높인다.1. 컨슈머 20개 토픽 20개 맞춰서 처리를 높인다. (확인해보니 토픽이 20개인데, 컨슈머는 3개인 상태로 동작하고 있음.)- 아예 토픽을 좀 더 늘리는 방법도 고려해볼 수 있을 것 같다. 하지만 컨슈머 3개인 상태로 동작하는게 큰 문제로 보여, 이 부분 부터 해결하고 고려하기로하자.2. 컨슈머의 비지니스 로직을 개선한다. (비지니스로직이 단건 씩 처리하도록 하는 부분이 많아 DB I/O가 부하가 많이 걸리도록 처리되고 있었음 ..