콘텐츠로 이동

부록 A. 설치 전 확인 사항#

사용자 계정의 리소스 한계 값 확인#

OS 명령어인 ulimit으로 사용자 계정에 설정된 리소스 한계값을 확인 또는 변경할 수 있다.

File Size#

프로세스가 생성 가능한 파일의 최대 크기

Data segment size#

프로세스가 사용 가능한 논리적 메모리의 최대 크기(VSZ측면)

Max memory size#

프로세스가 사용 가능한 물리적 메모리의 최대 크기(RSS측면)

Open files (descriptor)#

프로세스가 동시에 접근 가능한 파일 및 소켓의 최대 개수

Stack size#

최대 스택 사이즈

Virtual memory#

프로세스가 사용 가능한 가상 메모리의 최대 크기

리눅스 시스템은 사용자 계정의 리소스 한계값들을 "unlimited"로 설정할 것을 권장한다. 이 때 core file size는 unlimited로 설정하지 않도록 한다. 만일 Altibase 서버가 비정상 종료하여 코어를 덤프할 경우 메모리 데이터베이스를 모두 core 파일로 저장하기 때문에 unlimited로 설정하면 디스크 부족이 발생할 수 있다. Altibase 클라이언트 제품은 Stack size가 최소 70KB 이상이어야 한다.

리눅스 커널 파라미터 설정#

설정 방법#

/proc/sys/kernel/ 경로에 sem, shmmax, shmmni 파일과 /proc/sys/vm/swappiness 파일에 설정값을 반영한다. RedHat 7.2 이상에서는 /etc/systemd/logind.conf에서 RemoveIPC 설정값이 'no'로 설정되어 있는지 확인한다.

권장 값#

분류 커널 항목 권장 값(bytes)
공유 메모리 shmmax 2G+1
shmmin 500
shmseg 200
세마포어 semmns 8192
semmni 5029
semmsl 2000
semmap 5024
semmnu 1024
semopm 512
semume 512
semvmx 32767

단, 리눅스 커널 버전이 2.5 이상이 아닐 경우 IPC접속을 사용하는 세션이 갑자기 단절되는 현상이 발생할 수 있다.

서버 부팅 시 자동으로 커널 파라미터가 설정되게 하려면, /etc/rc.d/rc.local 파일 내에 아래의 항목을 추가하라.

echo 2147483648 > /proc/sys/kernel/shmmax
echo 4096 > /proc/sys/kernel/shmmni
echo 200 32000 512 5029 > /proc/sys/kernel/sem
echo 1 > /proc/sys/vm/swappiness

RemoveIPC 설정#

RedHat 7.2 이상의 버전에서는 RemoveIPC 설정값을 'no'로 설정하는 것을 권장한다(기본값은 'yes'). RemoveIPC가 'yes'로 설정되면 세마포어가 부족하여 비정상종료가 발생할 수 있기 때문이다.

설정값을 변경하려면 /etc/systemd/logind.conf에서 RemoveIPC=no로 설정한 후 OS를 재시작해야한다.


THP 설정 확인 및 비활성화 방법#

THP(Transparent Huge Pages)는 메모리 페이지의 크기를 증가시킴으로써, TLB(Translation Lookaside Buffer)를 조회하는 비용을 줄이기 위한 목적으로 리눅스에서 제공하는 메모리 관리 시스템이다. 하지만 원래 의도와 달리 메모리 할당 지연 및 단편화를 유발하여 오히려 시스템 성능이 저하되는 경우가 많다.

Altibase를 사용하기 위해 THP 옵션을 비활성화(never)로 해야 한다.

THP 설정 확인#

THP에서 설정할 수 있는 옵션은 always, madvise, never 3가지이다. [ ] 로 둘러싸인 것이 현재 적용된 옵션이다. 각각의 의미는 아래와 같다.

  • madvise: madvise() 함수를 통해 THP 사용을 명시적으로 요청한 프로세스에만 THP가 활성화되는 옵션이다.

  • always: 모든 프로세스에 항상 THP가 적용되게 된다.

  • never: madvise() 함수 요청과 관계없이 모든 프로세스에서 THP가 비활성화되는 것을 의미한다.

THP 설정 확인 방법은 아래와 같다.

  1. 아래 명령을 실행한다

    $ cat /sys/kernel/mm/transparent_hugepage/enabled
    
  2. 레드햇 리눅스에서는 아래 명령을 실행한다

    $ cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
    
  3. 아래와 같은 결과가 화면에 출력된다.

    $ [always] madvise never
    

THP 비활성화 방법#

Altibase의 운영을 위해서 THP 옵션을 never로 설정할 것을 권고한다.

  1. root 계정으로 /etc/grub.conf의 kernel boot 라인 끝에 transparent_hugepage=never를 아래처럼 추가한다.

    .....
    kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=UUID=067b9803-90ca-4875-a018-ff043adde1ed rd_NO_LUKS LANG=ko_KR.UTF-8  rd_NO_MD quiet rhgb crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_LVM rd_NO_DM transparent_hugepage=never
    ......
    
  2. 시스템을 재시작한다.

  3. THP 옵션이 never 인지 확인한다.

디스크 구성 상태 확인#

Altibase의 디스크 I/O는 기본적으로 리두 로그 파일과 데이터 파일에서 발생한다. 디스크 I/O에 따른 성능 저하를 감소시키기 위해 물리적으로 분리된 디스크 영역에 리두 로그 파일과 데이터 파일이 분산되도록 구성할 것을 권장한다.

OS Patch#

Linux#

glibc에서 malloc/free 등이 race condition으로 인해 deadlock이 발생할수 있는 버그가 있어, 해당 버그가 반영된 패치 이상으로 패치해야 한다. 따라서, glibc-2.12-1.166.el6_7.1 이상으로 glibc 패치를 권고한다.

참고: https://bugzilla.redhat.com/show_bug.cgi?id=1244002