티스토리 뷰
- 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가 안정된것을 확인
결론 : 모니터링 세팅을 해둬야겠다는 생각을 하게됨.
'문제해결' 카테고리의 다른 글
이 로직 .. 이게 어디서 동작하지? (0) | 2024.05.29 |
---|---|
Teams webhook 으로 멘션하기 (0) | 2024.03.22 |
php 로그 확인법 (0) | 2024.03.09 |
terminus 왼쪽 사이드바 안나올때 (0) | 2024.03.04 |
linux 서버/ windows 강제 프로세스 종료 (0) | 2023.09.07 |