사용 및 관리
RQ 시스템을 애플리케이션 개발에 적용하기 위해서는 Tmax 환경 파일에 RQ를 설정하는 과정과 실제 프로그램을 개발하는 2단계의 과정을 거쳐야 한다. 본 장에서는 이들 과정에 대한 설명과 함께 다양한 예제를 제시하여 애플리케이션을 개발할 때 RQ의 응용법에 대해 설명한다.
1. 환경설정
실제 애플리케이션 개발에 앞서 RQ 시스템을 시작하기 위해서는 기본적인 설정이 필요하다. RQ 시스템은 서버 그룹 단위로 관리되며 Tmax 환경 파일에 SVRGROUP 절과 RQ 절의 적절한 정의를 필요로 한다.
Tmax 환경 파일 설정에 더 자세한 내용은 Tmax Administration Guide를 참고한다. |
1.1. SVRGROUP 절
RQ 시스템을 사용하기 위해서는 RQ가 속하는 서버 그룹을 정의해야 하며 이를 위해 SVRGROUP 절의 기본 필수항목들 외에도 SVGTYPE 항목을 'RQMGR’로 지정해야 한다. 이 외에도 CPC 등을 설정하여 시스템 운영의 효율을 높일 수 있다. RQ는 COUSIN을 지원하지 않는다.
SVRGROUP 절의 환경설정 형식은 다음과 같이 정의한다.
*SVRGROUP SVRGROUP Name NODENAME = node-name, CPC = number, SVGTYPE = [RQMGR|TXRQMGR], TMSNAME= "POD"
-
SVRGROUP Name = string
-
크기: 63자 이내
-
서버 그룹명을 설정한다. SVRGROUP 절 내에서 유일한 이름이어야 한다.
-
-
NODENAME = string
-
서버 그룹이 속한 노드명을 설정한다. NODE 절에서 정의한 노드명이어야 한다.
-
-
CPC = numeric
-
범위: 4~128
-
RQS 프로세스와 CLH 프로세스 사이의 병렬 통신 채널 수를 지정하는 항목 RQ를 사용하지 않으면 무시된다. RQ의 사용이 빈번할 경우 다중의 채널을 유지함으로써 처리속도를 향상시킬 수 있다.
-
-
SVGTYPE = [RQMGR|TXRQMGR]
-
서버 그룹의 타입을 정의하는 항목이다.
설정값 설명 RQMGR
RQ를 사용할 경우 설정한다.
TXRQMGR
트랜잭션 환경에서 RQ를 사용하는 경우 설정한다.
트랜잭션 환경설정의 경우 다음과 같은 사항을 주의해야 한다.
-
RQ 서버 그룹의 타입(SVGTYPE)을 'RQMGR' 대신 'TXRQMGR’로 설정해야 한다.
-
기존의 tpenq/tpdeq API는 트랜잭션이 지원되지 않는다.
-
tpenq_ctl과 tpdeq_ctl은 하나의 트랜잭션으로 묶일 수 없다.
-
tpenq_ctl를 트랜잭션으로 묶는 경우 RQ에 저장하는 과정까지만 트랜잭션으로 처리한다. svc call에 대해서는 트랜잭션을 지원하지 않는다.
-
deq_time을 설정한 경우 설정시간 이후에 svc call을 하게 된다. "현재 시간 + delay_time"으로 설정해야 한다. delay_time을 10으로 주고 싶은 경우 다음과 같이 설정한다.
time(&t); ctl->deq_time = t + 10;
-
deq_time은 트랜잭션과 함께 사용할 수 없다.
-
-
-
TMSNAME = "POD"
-
RQ가 POD 서버와 같은 동작 방식을 취한다. TMSNAME 필드에 "POD" 를 입력한 경우 오로지 tpenq 요청에 대해서만 기동을 수행한다.
-
사용 예제
*SVRGROUP svg1 NODENAME = tmax1, CPC = 4, SVGTYPE=RQMGR
다음은 트랜잭션 환경에서 RQ를 사용하는 경우 환경설정의 예제이다.
*SVRGROUP Txrqsvg NODENAME = tmaxh4, CPC = 4, SVGTYPE = TXRQMGR
1.2. RQ 절
각 서버 그룹은 하나 이상의 RQ를 두고 사용할 수 있다. RQ 절에는 실제 RQ를 관리하는 방법에 대한 설정을 한다. RQ 절의 항목에는 QSIZE, FILEPATH, BOOT, FSYNC, BUFFERING 등이 있으며, 이 중 SVGNAME은 반드시 설정해야 한다.
RQ 절의 환경설정 형식은 다음과 같이 정의한다.
*RQ RQ Name SVGNAME = server-group-name, BOOT = COLD|WARM, QSIZE = number, BUFFERING = Y|N, FSYNC = Y|N, FILEPATH = file-path, MAX_MEMQCOUNT = number
-
RQ Name = string
-
크기: 14자 이내
-
RQ 절에 대한 논리적인 이름이다. RQ 절 내에서 여러 개의 RQ 정의가 가능하며, 각각의 RQ명은 유일한 값이어야 한다. 또한 하나의 서버 그룹에 한 개 이상의 RQ를 정의할 수 있다.
-
-
SVGNAME = string
-
RQ를 사용하는 서버 그룹명을 설정한다.
-
SVRGROUP 절에서 정의한 서버 그룹명이어야 한다.
-
-
BOOT = COLD|WARM
-
기본값: COLD
-
BOOT 필드는 Tmax 시스템이 재부팅될 때 RQ에 저장된 데이터를 조절한다.
-
다음은 설정 가능한 값에 대한 설명이다.
설정값 설명 WARM
시스템 장애복구 후에 큐에 쌓였던 데이터의 복구가 가능하게 된다.
COLD
Tmax 시스템이 재기동될 때 디스크에 저장된 데이터는 삭제된다.
-
-
QSIZE = numeric
-
범위: 1~2047Mbyte
-
기본값: 16MB
-
RQ의 크기를 지정하여 사용할 수 있다. RQ는 기본적으로 TMAXDIR의 path 디렉터리에 생성되며 지속적인 서비스 결과, 지정된 큐의 크기를 넘는 경우에는 tpenq()할 때 TPEQFULL 에러가 설정된다. RQ의 크기는 자동으로 증가하지 않으므로 RQ가 정의한 크기를 초과하여 에러가 발생할 것을 방지하기 위해 적당한 크기로 설정해야 한다. RQ 파일을 작성한 후에도 RQ 데이터가 저장되지 않으면 Tmax가 종료될 때 파일이 자동으로 삭제된다.
-
-
BUFFERING = Y|N
-
기본값: Y
-
RQ 파일 내용을 메모리에 cache할지 여부를 지정한다.
-
다음은 설정 가능한 값에 대한 설명이다.
설정값 의미 N
RQ 처리가 상대적으로 느려지나 요구되는 메모리가 작아진다.
-
-
FSYNC = Y|N
-
기본값: Y
-
BUFFERING을 'N’으로 설정해도 OS는 데이터를 바로 디스크에 저장하는 것이 아니고 최장 30초동안 메모리에 보관한다. 이러한 대기시간을 없애고 바로 메모리의 데이터를 디스크에 저장하도록 하는 항목이다.
-
다음은 설정 가능한 값에 대한 설명이다.
설정값 의미 N
시스템 장애가 발생할 때 데이터를 잃을 가능성이 있지만 RQ 처리 속도는 빨라진다.
Y
RQ 데이터가 메모리를 사용하지 않고 항상 디스크에 안전하게 저장되지만 'N’으로 설정했을 때보다 처리 속도가 늦어진다.
-
-
FILEPATH = literal
-
기본값: $(TMAXDIR)/path/RQ명.data
-
RQ에서 사용되는 파일 위치를 지정한다. 이 필드는 RQ 데이터 파일을 생성하며 이는 전체 파일명과 디렉터리명으로 정의되어야 한다.
TMAXDIR은 Tmax를 설치한 홈 디렉터리로 이후 Tmax 홈 디렉터리를 TMAXDIR라고 한다.
-
-
MAX_MEMQCOUNT = numeric
-
기본값: 1024
-
RQ에서 TPRQS_NON_PERSISTENT 타입으로, 즉 파일에 데이터를 기록하지 않고 메모리에만 데이터를 저장할 경우, 최대 저장할 수 있는 메시지의 갯수이다.
-
사용 예제
*RQ rqtest SVGNAME = svg1, BOOT = COLD, QSIZE = 1024, BUFFERING = Y, FSYNC = Y, FILEPATH = "/user1/tmax/myrq.data"
2. 시스템 관리
RQ 시스템의 관리는 일반 Tmax 시스템의 관리 방법과 크게 다르지 않다. 관리자는 RQ시스템을 별도로 기동 및 종료하거나 tmadmin을 사용하여 RQ의 상태 정보를 확인할 수 있다.
2.1. 기동 및 종료
tmboot
RQ 시스템은 tmboot 명령에 의해 Tmax 시스템과 함께 기동된다.
-
사용 방법
$ tmboot [-q SVGNAME]
항목 설명 [-q SVGNAME]
인수로 전달된 RQ 서버 그룹만 독립적으로 기동한다.
-
예제
-
[-T] 옵션을 사용한 경우에는 Tmax만 기동되고 RQS는 기동되지 않는다. 명령을 수행한 결과는 다음과 같다.
$ tmboot –T TMBOOT for node(tmaxs7) is starting: TMBOOT: TMM is starting: Thu Aug 23 16:29:16 2012 TMBOOT: CLL is starting: Thu Aug 23 16:29:16 2012 TMBOOT: CLH is starting: Thu Aug 23 16:29:16 2012 (I) CLH9991 Current Tmax Configuration: Number of client handler(MINCLH) = 1 Supported maximum user per node = 16040 Supported maximum user per handler = 16040 [CLH0141] TMBOOT: TLM(tlm) is starting: Thu Aug 23 16:29:16 2012
-
[-q] 옵션을 사용한 경우 RQ를 관리하는 서버 그룹에 해당하는 RQS를 기동할 수 있다. 명령을 수행한 결과는 다음과 같다.
$ tmboot –q svg1 TMBOOT for node(tmaxs7) is starting: TMBOOT: SVR(rqs) is starting: Thu Aug 23 16:33:22 2012
-
tmdown
RQ 시스템은 tmdown 명령에 의해 종료된다.
-
사용 방법
$ tmdown [-q SVGNAME]
항목 설명 [-q SVGNAME]
인수로 전달된 RQ 서버 그룹만 종료한다.
-
예제
[-q] 옵션을 사용한 경우 RQ를 관리하는 서버 그룹에 해당하는 RQS를 종료할 수 있다. 명령을 수행한 결과는 다음과 같다.
$ tmboot –q svg1 TMDOWN for node(tmaxs7) is starting: TMDOWN: RQS(_rqsvg:34) downed: Thu Aug 23 16:37:56 2012
2.2. 상태 정보 관리
Tmax 시스템이 기동되면 Tmax에서 제공하는 관리 툴인 tmadmin을 이용하여 시스템의 상태를 관리할 수 있다.
tmadmin의 실행 모드는 다음과 같이 2가지가 있다.
-
서브 관리자 모드
시스템 운영 상태를 확인할 수는 있지만 시스템 설정을 변경은 불가능한 모드로 다음과 같이 실행한다.
$ tmadmin [–s]
-
마스터 관리자 모드
시스템 운영 상태 확인 및 설정 변경이 가능한 모드로, 다음과 같이 실행한다.
$ tmadmin [–m]
tmadmin의 실행 모드에 대한 자세한 내용은 Tmax Administration Guide를 참고한다. |
rqs
tmadmin을 실행한 후 rqs 명령을 사용하여 현재 사용 가능한 RQ의 상태를 출력하거나 디스크 큐에 쌓여 있는 데이터를 조작할 수 있다.
-
사용 방법
$ rqs [-l][-s rqname][-c rqname][-f rqname]
항목 설명 [-l]
Tmax 환경 파일의 RQ 절에 정의된 모든 RQ명을 출력한다. 서브 관리자 모드에서 실행 가능하다.
[-s rqname]
RQ명으로 지정된 RQ의 상태 정보를 출력한다. Request, Reply, Fail 큐의 모든 상태를 출력한다. 서브 관리자 모드에서 실행 가능하다.
[-c rqname]
정체된 RQ를 제거한다. 마스터 관리자 모드에서만 실행 가능하다.
[-f rqname]
RQ에 쌓여 있는 서비스를 처리한다. 마스터 관리자 모드에서만 실행 가능하다.
-
예제
-
다음은 [-l] 옵션을 사용해서 명령어를 실행한 예제이다.
$ tmaxs1 (tmadm): rqs -l list of available RQs: rqtest rq2 rq3
-
다음은 [-s] 옵션을 사용해서 명령어를 실행한 예제이다.
$ tmaxs1 (tmadm): rqs -s rqtest ------------------------------------------- Number of queue entries of RQ [rqtest] ------------------------------------------- request 0 reply 20 fail 0
-
다음은 [-f] 옵션을 사용해서 명령어를 실행한 예제이다.
$ tmaxs1 (tmadm): rqs -f rqtest RQ(rqtest) flushed
-