기술 정보
home
채널 소개
home

Linux 환경에서 Tibero 기동 시 Cannot get shared memory segment 에러

문서 유형
장애 해결
분야
관리/환경설정
키워드
buff/cache
errno=28
linux
적용 제품 버전
5SP1FS01
5SP1FS02
5SP1FS03
5SP1FS04
5SP1FS06
6FS01
6FS02
6FS03
6FS04
6FS05
6FS06
6FS07
6FS07PS
7FS01
7FS02
7FS02PS
1 more property

현상

Tibero 기동 시 Cannot get shared memory segment 에러가 발생하며, 정상적으로 기동되지 않습니다.
$ tbboot shmget failed.: No space left on device *************************************************************************** * Cannot get shared memory segment: * SHM_KEY = 0x780d5c27, size = 3221225472, errno=28 (No space left on device) ***************************************************************************
SQL
복사

원인

Linux에서는 디스크에 저장된 파일을 메모리 영역인 파일 캐시에 로드한 후 사용함으로써, 디스크에 비해 상대적으로 느린 성능을 보완합니다.
또한, 파일을 사용한 이후에도 추후 재사용 가능성을 고려하여 해당 데이터를 즉시 반환하지 않고 파일 캐시에 유지함으로써, 느린 디스크에서 다시 로드해야 하는 오버헤드를 줄입니다.
이러한 반환되지 않은 파일 캐시로 인해 사용 가능한 메모리가 부족해지면, Tibero 구동 시 Cannot get shared memory segment 오류가 발생하면서 구동에 실패할 수 있습니다.
$ tbboot shmget failed.: No space left on device *************************************************************************** * Cannot get shared memory segment: * SHM_KEY = 0x780d5c27, size = 3221225472, errno=28 (No space left on device) ***************************************************************************
SQL
복사
free 명령어를 통해 파일 캐시 영역인 buffers/cache의 사용량과 시스템의 실제 free memory 용량을 확인할 수 있습니다.
# free -mt total used free shared buff/cache available Mem: 18046 4606 2844 9834 10596 3369 Swap: 32763 724 32039 Total: 50810 5330 34884
SQL
복사

해결

vm.drop_caches 커널 파라미터를 활용하여 파일 캐시 영역의 메모리를 반환함으로써 free memory를 확보한 후, Tibero 구동을 다시 시도합니다.
아래는 적용 예시입니다.
# sync * file cache를 비우기 전에 memory 에서만 변경된 datadisk에도 반영 한다. # sysctl -w vm.drop_caches=3 vm.drop_caches = 3 * 점유중인 file cache memory를 반환 # free -mt total used free shared buff/cache available Mem: 18046 4500 3861 9221 9684 4087 Swap: 32763 724 32039 Total: 50810 5224 35901 * file cache를 반환하여 free memory 확보 $ tbboot Listener port = 8629 Tibero 7 TmaxTibero Corporation Copyright (c) 2020-. All rights reserved. Tibero instance started up (NORMAL mode). * 기동 성공
SQL
복사
참고
vm.drop_caches 커널 파라미터는 설정 시점에만 적용되며, 지속적으로 유지되는 설정은 아닙니다.
해당 파라미터를 활용하면 파일 캐시에 저장된 항목들을 선택적으로 반환시킬 수 있습니다.
아래는 설정 예시입니다.
1. pagecache 반환 # sysctl -w vm.drop_caches = 1 2. dentires, inodes 반환 # sysctl -w vm.drop_caches = 2 3. pagecache, dentries, inodes 반환 # sysctl -w vm.drop_caches = 3
SQL
복사