Sun Java System Application Server 9.1 고가용성 관리 설명서

공유 메모리 및 세마포 구성

HADB를 설치하기 전에 공유 메모리 및 세마포를 구성해야 합니다. 절차는 운영 체제에 따라 다릅니다.

호스트에서 HADB가 아닌 응용 프로그램을 실행할 경우 이러한 응용 프로그램의 공유 메모리 및 세마포 사용을 계산하고 HADB에 필요한 값에 추가합니다. 이 절에서 권장하는 값은 각 호스트에서 최대 6개의 HADB 노드를 실행하는 데 충분합니다. 7개 이상의 HADB 노드를 실행하거나 추가 공유 메모리와 세마포가 필요한 응용 프로그램을 호스트에서 실행할 경우에만 값을 늘리면 됩니다.

세마포 수가 너무 적은 경우 HADB가 실패하고 No space left on device 오류 메시지가 표시될 수 있습니다. 이 오류는 데이터베이스를 시작하는 중 또는 런타임 중에 발생할 수 있습니다.

ProcedureSolaris에서 공유 메모리 및 세마포 구성

세마포가 전역 운영 체제 자원이기 때문에 구성은 HADB뿐만 아니라 호스트에서 실행 중인 모든 프로세스에 의존합니다. Solaris에서 /etc/system 파일을 편집하여 세마포 설정을 구성합니다.

  1. 루트로 로그인합니다.

  2. 공유 메모리를 구성합니다.

    • 호스트에서 단일 공유 메모리 세그먼트의 최대 크기를 지정하는 shminfo_shmmax를 설정합니다. 이 값을 HADB 호스트 시스템에 설치된 총 RAM 크기로 설정하되 2GB가 초과되지 않는 16진수 값으로 설정합니다.

      예를 들어, 2GB RAM의 경우 /etc/system 파일에서 다음과 같이 값을 설정합니다.


      set shmsys:shminfo_shmmax=0x80000000

      주 –

      호스트 시스템의 메모리를 확인하려면 다음 명령을 사용합니다.


      prtconf | grep Memory

    • Solaris 8 이전 버전에서는 하나의 프로세스가 연결할 수 있는 최대 공유 메모리 세그먼트 수인 shminfo_shmseg를 설정합니다. 이 값을 호스트당 노드 수의 6배로 설정합니다. 호스트당 최대 6개 노드인 경우 /etc/system 파일에 다음을 추가합니다.


      set shmsys:shminfo_shmseg=36

      Solaris 9 이상에서는 shmsys:shminfo_shmseg가 더 이상 사용되지 않습니다.

    • 전체 시스템의 최대 공유 메모리 세그먼트 수인 shminfo_shmmni를 설정합니다. 각 HADB 노드가 6개의 공유 메모리 세그먼트를 할당하므로 HADB에 필요한 값은 호스트당 노드 수의 6배 이상이어야 합니다. Solaris 9에서는 호스트당 최대 6개 노드인 경우 기본값을 변경할 필요가 없습니다.

  3. 세마포를 구성합니다.

    예를 들어, /etc/system 파일에서 다음 세마포 구성 항목을 확인합니다.


    set semsys:seminfo_semmni=10
    set semsys:seminfo_semmns=60
    set semsys:seminfo_semmnu=30

    해당 항목이 있을 경우 아래와 같이 값을 늘립니다.

    /etc/system 파일에 이러한 항목이 없으면 파일 끝에 추가합니다.

    • 최대 세마포 식별자 수인 seminfo_semmni를 설정합니다. 각 HADB 노드에는 하나의 세마포 식별자가 필요합니다. Solaris 9에서는 호스트당 최대 6개 노드인 경우 기본값을 변경할 필요가 없습니다. 예를 들면 다음과 같습니다.


      set semsys:seminfo_semmni=10
    • 전체 시스템의 최대 세마포 수인 seminfo_semmns를 설정합니다. 각 HADB 노드에는 8개의 세마포가 필요합니다. Solaris 9에서는 호스트당 최대 6개 노드인 경우 기본값을 변경할 필요가 없습니다. 예를 들면 다음과 같습니다.


      set semsys:seminfo_semmns=60
    • 시스템의 최대 실행 취소 구조 수인 seminfo_semmnu를 설정합니다. 각 연결에는 하나의 실행 취소 구조가 필요합니다(구성 변수 NumberOfSessions, 기본값 100). 호스트당 최대 6개 노드인 경우 다음과 같이 600으로 설정합니다.


      set semsys:seminfo_semmnu=600
  4. 시스템을 재부트합니다.

ProcedureLinux에서 공유 메모리 구성

Linux에서는 공유 메모리 설정을 구성해야 합니다. 기본 세마포 설정을 조정할 필요가 없습니다.

  1. 루트로 로그인합니다.

  2. /etc/sysctl.conf 파일을 편집합니다.

    Redhat Linux에서는 sysctl.conf를 수정하여 커널 매개 변수를 설정할 수도 있습니다.

  3. 다음과 같이 kernel.shmaxkernel.shmall 값을 설정합니다.


    echo MemSize > /proc/sys/shmmax
    echo MemSize > /proc/sys/shmall

    여기서 MemSize는 바이트 수입니다.

    kernel.shmax 매개 변수는 공유 메모리 세그먼트의 최대 크기(바이트)를 정의합니다. kernel.shmall 매개 변수는 시스템에서 한 번에 사용될 수 있는 페이지의 총 공유 메모리 양을 설정합니다. 이러한 매개 변수 값을 시스템의 실제 메모리 양으로 설정합니다. 값을 십진 바이트 값으로 지정합니다.

    예를 들어, 두 값을 모두 2GB로 설정하려면 다음을 사용합니다.


    echo 2147483648 > /proc/sys/kernel/shmmax
    echo 2147483648 > /proc/sys/kernel/shmall
  4. 다음 명령을 사용하여 시스템을 재부트합니다.

    sync; sync; reboot

Windows 절차

Windows에는 특수한 시스템 설정이 필요하지 않습니다. 그러나 기존 J2SE 설치를 사용하려면 JAVA_HOME 환경 변수를 J2SE가 설치된 위치로 설정합니다.