현상
SYSMASTER DB 에 등록하는 관제 DB 의 tpmagent 기동 시 Server Response Delayed.. Restart Process.. 에러가 발생하였습니다.
1.
tpmagent log
[ERROR] [2024/8/26 15:35:17] Get avaiable message idx fail, maybe SysMaster cannot receive message
[WARNING] [2024/8/26 15:35:17] Fail to find next available idx, next alloc message need to find available idx
[ERROR] [2024/8/26 15:35:30] There's no Server Response... Restart Process
SQL
복사
2.
SysMaster DB 상태 확인
broker, schema-resistry, zookeeper 정상적으로 기동되지 않고, status Restarting 로 표시됩니다.
NAME IMAGE COMMAND SERVICE CREATED STATUS
analyzer sysmaster-db-analyzer:8.1 "/bin/sh -c 'if [ ! …" analyzer 14 hours ago Up 14 hours
broker sysmaster-db-kafka-loggable:8.1 "/etc/confluent/dock…" broker 14 hours ago Restarting (1) 11 seconds ago
client sysmaster-db-client:8.1 "/bin/sh -c 'sh /sta…" client 14 hours ago Up 14 hours
collector sysmaster-db-collector:8.1 "/bin/sh -c 'if [ ! …" collector 14 hours ago Up 14 hours
metadb tmaxopensql/postgres:14.6 "/tmp/settings/entry…" metadb 14 hours ago Up 14 hours
repodb tmaxopensql/postgres:14.6 "/tmp/settings/entry…" repodb 14 hours ago Up 14 hours
schema-registry confluentinc/cp-schema-registry:5.4.0 "/etc/confluent/dock…" schema-registry 14 hours ago Restarting (1) 35 seconds ago
sdm sysmaster-db-sdm:8.1 "/bin/sh -c 'if [ \"$…" sdm 14 hours ago Up 14 hours
tibero-master sysmaster-db-tibero-master:8.1 "/bin/sh -c 'if [ ! …" tibero-master 14 hours ago Up 14 hours
zookeeper sysmaster-db-zookeeper-loggable:8.1 "/etc/confluent/dock…" zookeeper 14 hours ago Restarting (139) 19 seconds ago
SQL
복사
3.
zookeeper Docker 로그
### zookeeper docker log
[sysmaster@sysmaster]$ docker logs --tail 5 zookeeper > zookeeper_20240829.txt
library initialization failed - unable to allocate file descriptor table - out of memory
SQL
복사
4.
동일 현상 반복
해당 내용 관련하여 oom이 확인되어 ulimit 변경하였지만 동일 현상 반복적으로 발생하였습니다.
open files (-n) 65535
max user processes (-u) 63353
5.fs.file-max=200000 설정 변경하였지만 동일 현상 반복
SQL
복사
원인
해당 문제는 실제 DB 서버의 메모리가 부족해서 발생한 것이 아니라, Docker 컨테이너 내부의 ulimit 설정 값이 원인으로 확인되었습니다.
Docker 환경 내에서 설정된 ulimit 제약으로 인해 문제가 발생한 사례입니다.
해결
문제 해결을 위해 Docker 컨테이너 내부의 ulimit 설정 값을 변경합니다.
docker-compose.yml 파일 내부에 ulimit 값을 아래와 같이 명시하여 조정합니다.
ulimits:
nofile:
soft: 65536
hard: 65536
SQL
복사