개요
TCP 연결타입을 사용하여 DB 에 접속한 경우 DB client 프로그램이 정상적인 DB 연결 종료( Session close) 가 되지 않은 경우 altibase_boot.log 에는 관련 오류 메세지를 기록하게 되어 있습니다.
본 페이지에서는 해당 메세지의 유형과 원인에 대해서 자세히 설명합니다.
에러 메세지의 유형
ALTIBASE HDB 모든 버전에 오류 메세지가 기록되며 ALTIBASE HDB 버전에 따라 에러 메시지가 다소 다릅니다.
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
에러 메세지 설명
알티베이스 서버에는 클라이언트와 알티베이스 서버의 연결 상태를 감시하는 '세션 매니저 쓰레드'가 있습니다.
일반적으로 클라이언트 프로세스가 비정상 종료하면 그 클라이언트와 연결된 세션은 바로 그 상태를 감지할 수 있습니다.
하지만 세션 작업과는 무관한 알티베이스 서버 내부의 작업을 오랜 시간 수행 중일 때, 해당 세션은 클라이언트와 알티베이스 서버와의 연결 상태를 확인할 수 없습니다. 그래서 '세션 관리 쓰레드'를 두어 세션의 연결 상태를 주기적으로 감시합니다.
ERR-71018(errno=113) Failed to invoke a system function, read()
ERR-71019(errno=104) Failed to invoke a system function, write()
위 에러 코드들은(ERR-71018,71019) 이 쓰레드가 클라이언트와의 연결이 단절되었음을 감지하고 해당 세션을 정리하였음을 알리는 메시지입니다.
에러 코드 ERR-71018 은 클라이언트의 요청을 기다리는 단계에서,
에러 코드 ERR-71019 는 클라이언트로 응답하는 단계에서 연결이 끊어졌음을 감지했다는 의미합니다.
원인
연결이 끊긴 원인은 시스템 에러 코드 errno을 통해 유추할 수 있습니다.
ERR-71018(errno=113) Failed to invoke a system function, read()
ERR-71019(errno=104) Failed to invoke a system function, write()
위 에러 메세지중에서 errno=113, errno=104 가 시스템 에러 코드를 나타냅니다.
주요 에러코드
주로 발생하는 에러는 아래와 같습니다.
- ECONNRESET
이 에러 코드는 알티베이스 서버가 클라이언트로부터 RST 패킷을 수신하면 errno 에 ECONNRESET을 설정됩니다.
RST 패킷은 클라이언트에서 연결이 더 이상 유효 하지 않다고 알리는 경우에 해당합니다.
OS | 시스템 에러코드 |
---|---|
Linux | 104 |
AIX | 73 |
HP-UX | 232 |
SUN | 131 |
Windows | 10054 |
- ETIMEDOUT
TCP 통신에서 해당 세션에 응답이 없을 경우 OS는 여러 차례 연결 상태 확인을 위해 패킷 재전송을 시도합니다.
만약 설정된 시간 동안 응답이 없을 경우 ETIMEDOUT 가 발생합니다.
OS | 시스템 에러코드 |
---|---|
Linux | 110 |
AIX | 78 |
HP-UX | 238 |
SUN | 145 |
Windows | 10060 |
주요발생 케이스
주로 DB client 와 DB server 간에 연결된 TCP 세션이 강제로 종료되는 상황에서 자주 발생할 수 있습니다.
- L4, 방화벽에 의해서 idle 한 TCP session 이 강제로 정리된 경우
- LAN 카드, 기타 네트웍 장비의 기계적인 오류
- DB client 프로그램의 비정상적인 종료 또는 재기동
조치
알티베이스 서버에서 클라이언트와의 연결이 단절되었음을 감지하여 세선을 정리했음을 알리는 메시지로 알티베이스 서버에서 취할 수 있는 조치는 없습니다.
참고
이중화 환경에서는 altibase_rp.log 에 이와 동일한 에러 메시지가 발생할 수 있습니다.
이중화 sender 가 이중화 로그 전송 중 receiver 가 종료된 상태를 감지할 때 발생합니다