개요
DB 연결 종료 메시지는 TCP 연결 타입으로 Altibase 서버에 접속한 경우, Altibase 클라이언트 프로그램이 정상적으로 DB 연결 종료(Session close)를 수행하지 않았을 때 발생합니다. 이 경우, Altibase 서버 트레이스 로그 파일인 altibase_boot.log에 관련 에러 메시지가 기록됩니다.
본 문서에서는 이러한 에러 메시지의 유형과 발생 원인에 대해 설명합니다.
에러 메세지 유형
Altibase 버전에 따라 기록되는 에러 메시지는 다소 차이가 있습니다.
ALTIBASE HDB 4 ~ ALTIBASE HDB 5.3.3
- ERR-71018(errno=238) Failed to invoke a system function, read()
- ERR-71019(errno=104) Failed to invoke a system function, write()
ALTIBASE HDB 5.5.1 ~ 이상버전
- ERR-71018(errno=238) Failed to invoke the read() system function
- ERR-71019(errno=104) Failed to invoke the write() system function
에러 메세지 설명
Altibase 서버의 세션 매니저 쓰레드가 클라이언트와의 연결이 단절되었음을 감지하고 해당 세션을 정리하였음을 알리는 메시지입니다.
세션 매니저 쓰레드는 Altibase 서버와 클라이언트의 연결 상태를 주기적으로 점검하며, 다음과 같은 역할을 수행합니다:
- 클라이언트 비정상 종료 감지
클라이언트 프로세스가 비정상 종료되면 해당 세션의 상태를 즉시 감지하여 종료 처리합니다. 서버 내부 작업 중 연결 상태 확인
Altibase 서버가 내부 작업을 수행하느라 연결 상태를 실시간으로 확인하지 못할 경우에도, 세션 관리 쓰레드가 이를 주기적으로 점검합니다.
에러 메시지 의미
- ERR-71018
클라이언트의 요청을 기다리는 단계에서 연결이 끊어진 경우를 나타냅니다. (read() 호출 실패) - ERR-71019
클라이언트로 응답을 보내는 단계에서 연결이 끊어진 경우를 나타냅니다. (write() 호출 실패)
에러 메세지 발생 원인
에러 메시지의 발생 원인은 시스템 에러 코드(errno)로 유추할 수 있습니다.
- ERR-71018(errno=113) Failed to invoke a system function, read()
- ERR-71019(errno=104) Failed to invoke a system function, write()
주요 시스템 에러 코드
주로 발생하는 에러는 아래와 같습니다.
1. ECONNRESET
- 클라이언트가 RST 패킷(연결이 유효하지 않음을 알리는 패킷)을 보낸 경우 발생합니다.
Altibase 서버는 클라이언트로부터 RST 패킷을 수신하면 errno를 ECONNRESET으로 설정합니다.
시스템 에러 코드
- Linux : 104
- AIX : 73
- HP-UX : 232
- SUN : 131
- Windows : 10054
2. ETIMEDOUT
- TCP 통신에서 클라이언트에서 응답이 없을 때 발생합니다.
- OS는 연결 상태를 확인하기 위해 패킷 재전송을 시도하며, 설정된 시간 내 응답이 없으면 ETIMEDOUT 에러가 발생합니다.
시스템 에러 코드
- Linux : 110
- AIX : 78
- HP-UX : 238
- SUN : 145
- Windows : 10060
참고 자료
Linux : /usr/include/asm-x86_64/errno.h
AIX : /usr/include/errno.h
기타 OS : errno.h 헤더 파일 참조
주요 발생 사례
다음과 같은 상황에서 TCP 세션 연결 종료 에러가 자주 발생합니다:
1. 네트워크 환경 문제
- L4 스위치 또는 방화벽에서 Idle 상태의 TCP 세션을 강제로 정리한 경우.
- LAN 카드 및 기타 네트워크 장비의 기계적 오류.
2. DB 클라이언트 문제
- DB 클라이언트 프로그램의 비정상 종료 또는 재시작.
조치 사항
Altibase 서버에서 클라이언트와의 연결 단절을 감지하고 세션을 정리했음을 알리는 메시지로, 서버 측에서 추가적인 조치는 필요하지 않습니다.
추가 참고
이중화 환경에서는 altibase_rp.log에 유사한 에러 메시지가 기록될 수 있습니다.
- 이는 이중화 Sender가 로그 전송 중 Receiver의 종료 상태를 감지했을 때 발생합니다.