티스토리 뷰

- webhook문제가 간헐적으로 계~속 발생함
- 모니터링 툴이 전무한 상황 일단 이걸 해결하고자함. 
- 특정시점에 발생하는 것을 확인함. 
- 간할적인 좀시상태도 생김

보여지는 원인 
- DB lock
- Thread점유
- CPU부하.. 로직을 잘모르니 시스템 메트릭을 분석해봐야함. 

해결과정
- Heap dump 분석, Thread 부하테스트 진행.. 
- Thread TIMED_WATING 발생이 대부분이므로 이부분을 중점적으로 확인. (lettuce-eventExecutorLoop... -> Redis문제자나?)

1차 해결방법
- 일단 간헐적으로 좀비상태가 되는 문제 해결책으로 문제생기면 server restart 방법을 채택 (근본적인 해결책은 아니지만)
- 특정 시점 Thread Cnt가 기하 급수적으로 느는것을 확인함. -> 일단 Thread Cnt를 늘림 
- 스트레스 테스트를 진행했지만, 정확한 원인을 확인 불가 

문제 발견 
- redis interrupt발생을 확인 이전에 개발한 부분에서 레디스 리스너를 쓰면서 Thread를 점유하여 크리티컬하게 이슈가생긴거임. 

webhook/order/shipping/changed이 다수 인입 되면서 Thread Cnt 가 증가
-
(Thread Cnt : 556 , 평소 Thread Cnt : 80-100, Thread Max Cnt : 500)
배송상태가 특정시점에 대량으로 수정되는 것으로 예상됨

2차 해결방법

- 비지니스 로직 변경 : 레디스 리스너 제거, 해당 로직 Spring Batch로 처리하도록 함.

  • 배치 - order-synced 배치 로 분리
  • 알림톡 사용 mall의 경우만 - 배송/주문 관련 알림톡 webhook 받도록 로직 수정
    • redis를 이용 rdb io를 줄임 (redis ttl 5분)

- Thread가 안정된것을 확인 

결론 : 모니터링 세팅을 해둬야겠다는 생각을 하게됨.