✅ 권장 설정:
JDBC connectTimeout ≈ 3~5초
(항상 MySQL 서버의 connect_timeout보다 짧게 설정)
🔍 이유:
📌 MySQL connect_timeout (서버 설정)
- MySQL 서버가 TCP 접속 이후 클라이언트가 로그인 요청을 보내기까지 최대 대기 시간 (초 단위)
- 기본: 10초
- 서버 입장에서 "이 클라이언트가 아무 응답도 안 줘"라는 상황에서 연결을 끊는 기준
📌 JDBC connectTimeout (클라이언트 설정)
- JDBC 클라이언트가 서버에 접속을 시도할 때 최대 대기 시간 (밀리초 단위)
- 네트워크 문제나 서버 다운 시 빠르게 실패하도록 함
🔄 왜 JDBC 쪽을 더 짧게 해야 할까?
- 클라이언트가 너무 오래 기다리지 않게 하여 빠른 장애 감지가 가능
- 서버 쪽 connect_timeout은 실제 접속 이후 로그인 지연을 다루므로, 클라이언트의 연결 시도 타임아웃과는 다른 상황을 커버
- 긴 JDBC timeout은 장애 시 애플리케이션 쓰레드가 오랫동안 블로킹될 수 있음
✅ 설정 예시:
properties
복사편집
jdbc:mysql://localhost:3306/mydb?connectTimeout=5000&socketTimeout=10000
- connectTimeout=5000 → JDBC는 5초 기다리다가 접속 실패
- MySQL connect_timeout=10 → 문제 없음
⛔ 반면, 이렇게 하면 문제 생김:
- JDBC connectTimeout = 15초
- MySQL connect_timeout = 10초
이 경우, 서버가 10초 후 연결을 끊었지만, JDBC는 여전히 15초까지 기다리기 때문에 예상치 못한 에러나 지연이 발생할 수 있습니다.
728x90
'AI' 카테고리의 다른 글
ArubaOS 종류 (1) | 2025.05.16 |
---|---|
Node.js에서 TCP 소켓을 사용하여 JSON 데이터를 안전하게 수신하는 서버 (0) | 2025.05.15 |
TCP 소켓을 통해 JSON 데이터를 완전히 전송 (0) | 2025.05.15 |
동기(Synchronous) vs 비동기(Asynchronous) vs 블로킹(Blocking) vs 논블로킹(Non-blocking) 차이 (0) | 2025.05.10 |
Snappy 압축 라이브러리 (0) | 2025.04.28 |
자바 서버 → Snappy 압축 → 리액트 프론트에서 풀기 (0) | 2025.04.28 |
메모리 이슈 (0) | 2025.04.21 |
llama2 설치 (도커) (0) | 2025.04.21 |
댓글