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