Skip to content

장애삽질이 가르쳐 준 것들

실무에서 만난 문제들을 기록합니다.

79편의 포스트·9년차 백엔드·광고 0
로그 한 줄 없이 서버가 멈췄다 - Virtual Thread와 커넥션 풀 Starvation 썸네일
Infra
📖 9분

로그 한 줄 없이 서버가 멈췄다 - Virtual Thread와 커넥션 풀 Starvation

TL;DR 증상: 개발 서버가 완전히 멈춤, ALB 헬스체크도 응답 없음, 로그 한 줄도 없음 원인: Virtual Thread 100개가 병렬 DB 조회, HikariCP 커넥션 10개 (개발 환경) → 커넥션 풀 고갈로 Deadlock 발생 해결: 개발 환경 커넥션 풀 10 → 50 증가, 병렬 조회 수 10개로 제한, 타임아웃 설정 효과: 커넥션 풀 Starvation 해결, 서버 먹통 현상 사라짐, 모니터링…

  • #Spring
  • #Java
  • #Virtual Thread
AWS Lambda + AOP로 분산 캐시 무효화하기 썸네일
Infra
📖 5분

AWS Lambda + AOP로 분산 캐시 무효화하기

서론 “관리자가 건물 정보를 수정했는데, 앱에서는 왜 이전 정보가 계속 보이나요?” 고객센터에서 이런 문의가 들어왔을 때, 처음엔 DB 반영 문제인 줄 알았습니다. 그런데 확인해보니 DB에는 최신 데이터가 있었거든요. 원인을 추적해보니 캐시 문제였습니다. 그것도 로컬 캐시요. 저희 서비스는 2대의 API 서버가 로드밸런서 뒤에서 돌아갑니다. 각 서버가 로컬 메모리에 캐시를 들고 있는데, 문제는 이 캐시가 서로 동기화되지…

  • #Spring
  • #AWS Lambda
  • #AOP
SQS DLQ에 메시지가 쌓이고 있었다 - 예약 발송 장애 대응기 썸네일
Infra
📖 4분

SQS DLQ에 메시지가 쌓이고 있었다 - 예약 발송 장애 대응기

TL;DR 증상: 예약 메시지 발송이 간헐적으로 실패, DLQ에 메시지가 쌓이는데 모니터링이 없어서 뒤늦게 발견 원인: Consumer에서 DB 업데이트 시 트랜잭션 격리 수준 문제로 데드락 발생 해결: 격리 수준 READ_COMMITTED로 조정 + DLQ 모니터링 알림 + 재처리 로직 구현 효과: 실패율 약 3% → 0.1% 미만, MTTD(Mean Time To Detect) 3일 → 5분 한계: 재처리 로직이 멱등성을…

  • #SQS
  • #DLQ
  • #Deadlock