Table of Contents | ||
---|---|---|
|
개요
...
솔라리스(Solaris) 운영체제(Operating System)에서 Altibase를 설치하고 운영하기 위한 커널파라미터(kernel parameter)의 적절한 설정 값 및 각종 사용자 환경 설정에 대한 가이드를 제시한다.
...
Note |
---|
이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다. 이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다. Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다. |
커널파라미터
...
솔라리스 운영체제에서 Altibase를 운영할 경우 변경해야 할 커널파라미터의 종류와 어떤 이유로 설정을 변경해야 하는지에 대해 설명한다. 마지막 부분에는 솔라리스에서 커널파라미터를 변경하는 방법에 대해 소개한다.
각 커널파라미터와 관련된 상세한 사항은 솔라리스에서 제공하는 가이드를 참조하도록 한다.
공유메모리
...
어플리케이션을 개발하는 경우 두 개 이상의 프로세스가 정보를 주고 받아야 할 필요성이 발생한다. 운영체제는 이를 위해 IPC (Inter Process Communication)라고 부르는 자원을 제공하고 있다. 여러 IPC자원 중에 두 개 이상의 프로세스가 정보를 주고 받기 위해 사용되는 메모리영역을 공유메모리(shared memory)라고 부른다. 공유메모리는 사용자가 단위를 지정하여 한 개 이상의 영역으로 나누어 설정할 수 있다. 한 개의 공유메모리 영역을 세그먼트(segment)라고 부른다.
...
커널파라미터 | 설명 | 권장 값 |
---|---|---|
shmmax | 한 개의 공유메모리 세그먼트의 최대크기 | 2G+1 |
shmmni | 시스템내의 공유메모리 세그먼트의 최대개수 | 500이상 |
shmseg | 한 개의 공유메모리에 접근 가능한 프로세스의 최대개수 | 200이상 |
메모리 DB를 공유메모리에 작재할 경우 고려사항
...
메모리DB를 공유메모리에 적재할 경우에는 아래 사항들을 추가로 고려해야 한다.
- shmmax
shmmax의 경우는 구동단계에서는 Altibase 설정파일 내에 STARTUP_SHM_CHUNK_SIZE 항목의 크기만큼 한 개의 세그먼트가 만들어지기 때문에 STARTUP_SHM_CHUNK_SIZE 보다 큰 값으로 설정하도록 한다. - shmmni
메모리DB의 사용량이 증가하게 되면 Altibase는 자동적으로 메모리영역을 증가시킨다. 이 경우 역시 세그먼트가 새롭게 생성되는데 이 세그먼트의 크기는 Altibase 설정파일 내에 EXPAND_CHUNK_PAGE_COUNT * 32K 단위로 세그먼트가 생성되기 때문에 shmmni는 가능한 여유 있게 설정하도록 한다.
세마포어
...
공유메모리와 동일하게 IPC자원의 일종이다. 차이점은 공유메모리가 데이터를 프로세스 간에 공유하기 위한 방법으로 제공되는 반면에 세마포어는 프로세스 간의 동기화를 구현하기 위한 방법으로 운영체제에서 제공되는 자원이다. 동기화란 특정자원이나 객체에 대해 한 시점에 하나의 프로세스만이 접근하여 변경 가능하도록 제어 하는 것을 의미한다. (뮤텍스(mutex)와 다르게 조회는 동시에 가능하게 하다.)
...
커널파라미터 | 설명 | 권장 값 |
---|---|---|
semmns | 시스템 내 세마포어의 최대개수이며 16바이트의 커널메모리가 할당된다. | 8192 |
semmni | 세마포어 세트의 최대개수로 65535 이내에 설정가능하며 하나의 세트당 84바이트의 커널메모리가 할당된다. | 5029 |
semmsl | 한 개의 세마포어 세트에 존재하는 세마포어의 최대개수이며 논리적으로 semmns와 같거나 작아야 한다. 너무 크게 잡으면 몇 개의 세마포어 ID가 시스템 전체의 세마포어를 독점할 수 있다. | 2000 |
semmap | semget 호출에 의해 얻어지는 세마포어 공간을 의미 | 5024 |
semmnu | 시스템 내의 undo structure의 최대개수 | 1024 |
semopm | semop 시스템 콜에서 처리하는 operation의 최대개수 | 512 |
semume | 한 개의 프로세스당 undo entry의 최대개수 | 512 |
semvmx | 한 개의 세마포어의 최대값을 제한하며 32767보다 크게 지정하지 않는다. | 32767 |
변경방법
...
솔라리스에서는 /etc/system 파일을 통해 커널파라미터를 설정하며 5.10 이후부터는 기존방법 외에도 프로젝트 개념을 도입하면서 사용자계정 별로도 커널파라미터를 적용할 수 있게 되어 있다.
여기서는 두 가지 방식으로 모두에 대해 설정하는 예를 다룬다. 기본적으로 root 계정으로의 접속을 필요로 하며 올바르게 적용하기 위해서는 변경 후 시스템을 재 구동을 하여야만 한다.
5.10 이하
...
/etc/system 파일 내에 vi와 같은 편집기로 아래와 같은 내용을 추가한다.
Code Block | ||||
---|---|---|---|---|
| ||||
set shmsys:shminfo_shmmin = 1 set shmsys:shminfo_shmmax = 2147483649 set shmsys:shminfo_shmmni = 500 set shmsys:shminfo_shmseg = 200 set semsys:seminfo_semmns = 8192 set semsys:seminfo_semmni = 5029 set semsys:seminfo_semmsl = 2000 set semsys:seminfo_semmap = 5024 set semsys:seminfo_semmnu = 1024 set semsys:seminfo_semopm = 512 set semsys:seminfo_semume = 512 |
5.10 이상
...
솔라리스 5.10에서는 기존에 존재하던 커널파라미터 항목들이 일부 사라졌기 때문에 공유메모리 및 세마포어와 관련된 설정 항목을 projadd 및 projmod라는 솔라리스 유틸리티를 사용하여 쉘 프롬프트 상에서 실행하면 된다.
...
Code Block | ||||
---|---|---|---|---|
| ||||
# projadd –l |
사용자 환경설정
...
솔라리스 운영체제에서 Altibase 운영을 위한 시스템 내의 사용자계정의 리소스 제한, 환경변수 및 각종 환경설정에 대해 설명한다.
설정과 관련된 구체적인 사항은 솔라리스에서 제공하는 가이드를 참조하도록 하는 것으로 대체한다.
리소스 제한
...
유닉스 운영체제에서는 사용자계정 단위로 사용 가능한 리소스에 대한 논리적인 제한 값을 설정한다. 이 리소스 제한 항목 중, 안정적인 서비스 운영을 위해 확장시켜야 하는 일반적인 유닉스 운영체제에서의 항목들은 아래와 같다.
...
변경방법은 ulimit 명령을 사용한 환경설정파일 편집 및 시스템 리소스 설정파일 편집 또는 해당 운영체제 별로 제공하는 커널관련 유틸리티 활용이 있다.
Hard-Limit & Soft-Limit
...
리소스 제한 값은 hard-limit, soft-limit 이라는 개념으로 구분된다. hard-limit은 시스템어드민계정(root)외에는 변경할 수 없는 커널차원의 리소스 제한 최대값을 의미하며 soft-limit은 현재 사용자계정 내에서는 hard-limit까지 변경이 가능하다는 것을 의미한다. (상세한 내용은 ulimit –S / -H 옵션을 참고한다.)
...
참고로 솔라리스는 사용자 리소스 제한관련 시스템 설정파일이 별도로 없고 /etc/system에 함께 기술한다. 그 외에도 /etc/default/login 또는 /etc/profile을 이용하는 방법도 있다.
환경변수
...
필수적인 환경변수는 아래와 같다. 아래 환경변수를 설정하고자 하는 사용자의 쉘(shell)의 문법(syntax)에 따라 사용자계정의 환경설정파일에 반드시 설정하도록 한다.
...
환경변수 | 설명 |
---|---|
LD_LIBRARY_PATH_64 | 동적 라이브러리를 64비트로 링크할 경우에 설정하도록 한다. |
문자세트 관련 고려사항
...
Altibase v5.3 버전 이전에는 문자세트와 관련하여 NLS_USE 라는 항목과 관련해 별도의 프로퍼티가 존재 하였으나 Altibase v5.3 이후로 환경변수로 대체되었다.
이로 인해, Altibase v5.3 버전 이상에서 DB의 문자세트를 US7ASCII가 아닌 KO16KSC5601 / MS949 / UTF8 등을 설정했을 경우에는 반드시 ALTIBASE_NLS_USE 라는 환경변수를 설정해야만 한다. 그렇지 않을 경우에는 기본설정인 US7ASCII로 접속하게 되어 입력 후 조회 시점에 알 수 없는 문자열 형태로 조회가 되게 된다.
터미널 환경
...
[환경변수] 섹션에서 언급한 문자세트 사용관련 고려사항과 더불어, 사용하는 터미널의 폰트(font) 역시 DB에 설정한 문자세트와 동일하게 설정하여야 한다.
요약
...
솔라리스 운영체제에서 Altibase의 안정적인 운영을 위해서는 커널파라미터 설정 및 사용자 환경 설정을 사전에 수행해야만 한다. 설정을 올바르게 수행하지 않은 경우, 시스템의 리소스가 충분함에도 불구하고 각각의 제한 값들에 의해 문제가 발생 할 수 있으므로 주의해야 한다.
설정예제
...
커널파라미터
...
아래 표를 참조, 적절한 커널파라미터를 설정하도록 한다.
...
메모리DB를 공유메모리에 적재할 경우 추가 고려되어야 하는 요소는 [공유메모리] 섹션을 참조하도록 한다.
사용자 리소스 제한
...
sh, bash, ksh의 경우, 환경설정파일을 이용한 필수 환경변수 설정예제는 아래와 같다. csh의 경우는 export 대신 setenv 와 같은 쉘 명령어를 통해 선언한다.
...