Error

[Error][DB] SQL Error [08S01]: Communications link failure

오선지♬ 2025. 5. 4. 13:18
728x90
반응형

이 오류는 데이터베이스와의 연결이 끊어졌기 때문에 발생한 것입니다. 메시지를 분석하면 다음과 같은 원인이 있습니다:


🔍 오류 요약

  • 오류 코드: 08S01 (통신 링크 실패)
  • 원인: 마지막으로 패킷을 주고받은 시점이 약 2시간 44분(= 9,873,514ms) 전입니다.
  • 결론: DB 연결이 너무 오래 유지되다가 타임아웃되었거나, 네트워크가 끊겼습니다.

🛠 해결 방법

1. Connection Pool 설정 확인

  • 연결을 오랜 시간 유지하면 MySQL 서버는 비활성 연결을 종료할 수 있습니다.
  • 다음 설정들을 점검하세요:

✅ JDBC (예: HikariCP 사용 시)

spring.datasource.hikari.max-lifetime=1800000 # 30분
spring.datasource.hikari.idle-timeout=600000 # 10분
spring.datasource.hikari.keepalive-time=300000 # 5분
  • 또는 직접 validationQuery (예: SELECT 1)를 설정해서 유휴 연결이 유지되도록 합니다.

2. MySQL 서버 설정 확인

  • 서버에서 비활성 세션을 끊는 설정이 있을 수 있습니다:
wait_timeout = 28800      # 기본값: 8시간
interactive_timeout = 28800
  • 이보다 짧은 시간에 연결이 끊긴다면, 애플리케이션의 커넥션 풀 설정이 더 짧거나, 방화벽/네트워크 장비가 중간에서 연결을 끊는 경우입니다.

3. 네트워크 문제 확인

  • 방화벽, VPN, 클라우드 인프라(LB, NAT 등)에서 장시간 유지되는 연결을 자동으로 끊을 수도 있습니다.
  • 이런 경우엔 주기적으로 ping을 보내거나 keep-alive 전략을 사용해야 합니다.

4. DB 커넥션 재시도 로직 추가

  • 중요한 작업이라면 DB 연결 실패 시 재시도 로직을 추가하여 사용자 경험을 보완할 수 있습니다.
728x90
반응형