1. TUXEDO/Q 개념
Ø TUXEDO Version 6.X 은 Disk Queuing 만을 제공
Ø TUXEDO Version 7.1 부터는 Memory Queuing 도 제공
Ø Queued Message 흐름도
|
참고사항) 위 개념을 근거로 하여 SK NATE 에 구성된 TUXEDO 구성화일을 참조
2. TUXEDO/Q 적용사례
Ø SK NATE TUXEDO 구성화일
Ø 발췌일자 : 2002-04-15 월요일 기준으로 발췌
*RESOURCES IPCKEY 33333 MASTER SITE1 UID 104 GID 20 PERM 0666 MAXACCESSERS 1610 MAXACLGROUPS 16384 MAXGTT 2048 MAXGROUPS 100 MAXNETGROUPS 8 MAXMACHINES 256 MAXQUEUES 400 MAXDRT 0 MAXRFT 0 MAXRTDATA 4 MAXSERVERS 400 MAXSERVICES 8500 MAXCONV 1 MODEL SHM LDBAL Y CMTRET COMPLETE MAXBUFTYPE 16 MAXBUFSTYPE 32 SCANUNIT 10 SANITYSCAN 12 DBBLWAIT 2 BBLQUERY 30 BLOCKTIME 30 NOTIFY DIPIN SYSTEM_ACCESS FASTPATH USIGNAL SIGUSR2
*MACHINES "nateifs1" LMID="SITE1" TUXCONFIG="/home01/IFS/env/tuxconfig" TUXDIR="/home01/tuxedo" APPDIR="/home01/IFS/app" TLOGDEVICE="/home01/IFS/env/TLOG" TLOGNAME="TLOG" TLOGSIZE=2048 ULOGPFX="/data/log/tux_log/ulog/ULOG" MAXWSCLIENTS=64 CMPLIMIT="MAXLONG,MAXLONG" NETLOAD=0 SPINCOUNT=5000 MAXACLCACHE=100
*GROUPS "GRPNXA1" LMID="SITE1" GRPNO=101 TMSCOUNT=3 "DEV_GRP" LMID="SITE1" GRPNO=102 TMSCOUNT=3 "CNCNN_GRP" LMID="SITE1" GRPNO=310 OPENINFO="TUXEDO/QM:/user1/CNCNN:S_CNCNN" TMSNAME="TMS_QM" TMSCOUNT=2 "CNSTO_GRP" LMID="SITE1" GRPNO=320 OPENINFO="TUXEDO/QM:/user2/CNSTO:S_CNSTO" TMSNAME="TMS_QM" TMSCOUNT=2 "QMAIL_GRP" LMID="SITE1" GRPNO=330 OPENINFO="TUXEDO/QM:/user3/QMAIL:S_QMAIL" TMSNAME="TMS_QM" TMSCOUNT=2 "ALARM_GRP" LMID="SITE1" GRPNO=340 OPENINFO="TUXEDO/QM:/user1/ALARM:S_ALARM" TMSNAME="TMS_QM" TMSCOUNT=2 "CMYPC_GRP" LMID="SITE1" GRPNO=350 OPENINFO="TUXEDO/QM:/user2/CMYPC:S_CMYPC" TMSNAME="TMS_QM" TMSCOUNT=2 "CNHAN_GRP" LMID="SITE1" GRPNO=360 OPENINFO="TUXEDO/QM:/user3/CNHAN:S_CNHAN" TMSNAME="TMS_QM" TMSCOUNT=2 "WSGRP1" LMID="SITE1" GRPNO=901 TMSCOUNT=3 "JSLGRP" LMID="SITE1" GRPNO=902 TMSCOUNT=3 "JREPGRP" LMID="SITE1" GRPNO=903 TMSCOUNT=3 "DOMGRP" LMID="SITE1" GRPNO=905 TMSCOUNT=3
*NETGROUPS
*SERVERS "svrnxa1" SRVGRP="GRPNXA1" SRVID=1000 CLOPT="-A -r -o /data/log/tux_log/out/svrnxa1.out -e /data/log/tux_log/stderr" SEQUENCE=1 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=2 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "svrnxa2" SRVGRP="GRPNXA1" SRVID=1100 CLOPT="-A -r -o /data/log/tux_log/out/svrnxa2.out -e /data/log/tux_log/stderr -uid nate -pw nate@CUSTDB" SEQUENCE=2 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=2 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "svrnxa3" SRVGRP="GRPNXA1" SRVID=1200 CLOPT="-A -r -o /data/log/tux_log/out/svrnxa3.out -e /data/log/tux_log/stderr -uid nate -pw nate@CUSTDB" SEQUENCE=3 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=5 MAX=5 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "svrnxa4" SRVGRP="GRPNXA1" SRVID=1300 CLOPT="-A -r -o /data/log/tux_log/out/svrnxa4.out -e /data/log/tux_log/stderr -uid nate -pw nate@CUSTDB" SEQUENCE=4 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=2 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "svrnxa5" SRVGRP="GRPNXA1" SRVID=1400 CLOPT="-A -r -o /data/log/tux_log/out/svrnxa5.out -e /data/log/tux_log/stderr -uid nate -pw nate@CUSTDB" SEQUENCE=5 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=2 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "svrnxa6" SRVGRP="GRPNXA1" SRVID=1500 CLOPT="-A -r -o /data/log/tux_log/out/svrnxa6.out -e /data/log/tux_log/stderr" SEQUENCE=6 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=2 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "svrnxa7" SRVGRP="GRPNXA1" SRVID=1600 CLOPT="-A -r -o /data/log/tux_log/out/svrnxa7.out -e /data/log/tux_log/stderr -uid nate -pw nate@CUSTDB" SEQUENCE=7 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=2 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "svrdom" SRVGRP="DOMGRP" SRVID=1700 CLOPT="-A -r -o /data/log/tux_log/out/svrdom.out -e /data/log/tux_log/stderr" SEQUENCE=8 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=5 MAX=5 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "TMQUEUE" SRVGRP="CNCNN_GRP" SRVID=3100 CLOPT="-s S_CNCNN:TMQUEUE -r -o /data/log/tux_log/out/CNCNN.out -e /data/log/tux_log/stderr" SEQUENCE=11 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=3 MAX=3 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "TMQUEUE" SRVGRP="CNSTO_GRP" SRVID=3200 CLOPT="-s S_CNSTO:TMQUEUE -r -o /data/log/tux_log/out/CNSTO.out -e /data/log/tux_log/stderr" SEQUENCE=12 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=3 MAX=3 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "TMQUEUE" SRVGRP="QMAIL_GRP" SRVID=3300 CLOPT="-s S_QMAIL:TMQUEUE -r -o /data/log/tux_log/out/QMAIL.out -e /data/log/tux_log/stderr" SEQUENCE=13 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=3 MAX=3 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "TMQUEUE" SRVGRP="ALARM_GRP" SRVID=3400 CLOPT="-s S_ALARM:TMQUEUE -r -o /data/log/tux_log/out/ALARM.out -e /data/log/tux_log/stderr" SEQUENCE=14 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=3 MAX=3 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "TMQUEUE" SRVGRP="CMYPC_GRP" SRVID=3500 CLOPT="-s S_CMYPC:TMQUEUE -r -o /data/log/tux_log/out/CMYPC.out -e /data/log/tux_log/stderr" SEQUENCE=15 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=3 MAX=3 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "TMQUEUE" SRVGRP="CNHAN_GRP" SRVID=3600 CLOPT="-s S_CNHAN:TMQUEUE -r -o /data/log/tux_log/out/CNHAN.out -e /data/log/tux_log/stderr" SEQUENCE=16 RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=3 MAX=3 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "WSL" SRVGRP="WSGRP1" SRVID=100 CLOPT="-A -- -n //70.12.202.119:5550 -w WSH -m 2 -M 4 -x 10 -Z 0" SEQUENCE=21 RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "WSL" SRVGRP="WSGRP1" SRVID=110 CLOPT="-A -- -n //203.236.40.87:5550 -w WSH -p 5551 -P 5554 -m 2 -M 4 -x 10" SEQUENCE=22 RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "WSL" SRVGRP="WSGRP1" SRVID=120 CLOPT="-A -- -n //150.31.132.119:5550 -w WSH -m 2 -M 2 -x 10 -Z 0" SEQUENCE=23 RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "JSL" SRVGRP="JSLGRP" SRVID=220 CLOPT="-A -- -n //70.12.202.119:5570 -d /dev/tcp -m 1 -M 2 -x 5 " SEQUENCE=24 RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "DMADM" SRVGRP="DOMGRP" SRVID=16 CLOPT="-A" RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=1 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "GWADM" SRVGRP="DOMGRP" SRVID=17 CLOPT="-A" RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=1 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "GWTDOMAIN" SRVGRP="DOMGRP" SRVID=18 CLOPT="-A" RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=1 MAX=1 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "JREPSVR" SRVGRP="JREPGRP" SRVID=260 CLOPT="-A -r -- -P /home01/IFS/env/jolt/jrepository -W " RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=2 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y "devsvr" SRVGRP="DEV_GRP" SRVID=1800 CLOPT="-A -r -o /data/log/tux_log/out/devsvr.out -e /data/log/tux_log/stderr" RQPERM=0666 REPLYQ=Y RPPERM=0666 MIN=5 MAX=5 CONV=N SYSTEM_ACCESS=FASTPATH MAXGEN=255 GRACE=0 RESTART=Y
*SERVICES
*ROUTING |
3. qmadmin 사용방법
Ø 해당 명령어에 대한 자세한 설명은 TUXEDO/Q User Manual 를 참조
Ø 명령어 라인상에서 아래와 같은 형식으로 qmadmin 명령을 수행한다.
[nateifs1:/home/nate]qmadmin /user1/CNCNN qmadmin - Copyright (c) 1996 BEA Systems, Inc. Portions * Copyright 1986-1997 RSA Data Security, Inc. All Rights Reserved. Distributed under license by BEA Systems, Inc. TUXEDO is a registered trademark. QMCONFIG=/user1/CNCNN
> |
참고사항) 위에서 /user1/CNCNN 은 TUXEDO 구성화일의 GROUPS 섹션에 정의된 Queue
Device 명이다.
각, CP(Contents Provider) 별로 다른 Queue Device 를 사용하므로 모니터하고자 하는
CP(Contents Provider) 에 대해서는 해당 Queue Device 명을 인자로 넘겨주어 실행
해야 한다.
Ø Qmadmin 도움말(Help) 은 qmadmin Prompt 상에서 help 라고 입력하면 된다.
> help chdl [[dlindex] newdevice] crdl [device [offset [size]]] dsdl [-y] [dlindex] echo (e) [{off|on}] help (h) [{command|all}] ipcrm [-f] [-y] [queue_space_name] ipcs [queue_space_name] lidl [dlindex] livtoc paginate (page) [{off|on}] qaborttrans (qabort) [-y] [tranindex] qaddext [queue_space_name [pages]] qclose qchange [queue_name [out-of-order [retries [delay [ high [ low [ cmd]]]]]]] qchangeprio (qcp) [-y] [newpriority] qchangequeue (qcq) [-y] [newqueue] qchangetime (qct) [-y] [newtime] qcommittrans (qcommit) [-y] [tranindex] qcreate (qcr) [queue_name [qorder [out-of-order [retries [delay [ high [ low [ cmd]]]]]]]] qdeletemsg (qdltm) [-y] qdestroy (qds) [{-p | -f}] [-y] [queue_name] : <= Enter Key 를 누른다 qcommittrans (qcommit) [-y] [tranindex] qcreate (qcr) [queue_name [qorder [out-of-order [retries [delay [ high [ low [ cmd]]]]]]]] qdeletemsg (qdltm) [-y] qdestroy (qds) [{-p | -f}] [-y] [queue_name] qinfo [queue_name] qlist (ql) qmap qopen [queue_space_name] qprinttrans (qpt) qscan [{ [-t time1[-time2]] [-p priority1[-priority2]] [-m msgid] [-i corrid] | none}] qset [queue_name] qsize [pages [queues [transactions [processes [messages]]]]] qspacechange (qspch) [queue_space_name [ipckey [trans [ procs [ messages [errorq [inityn [blocking]]]]]]]] qspacecreate (qspc) [queue_space_name [ipckey [ pages [ queues [trans [ procs [ messages [errorq[inityn[blocking]]]]]]]] qspacedestroy (qspds) [-f] [-y] [queue_space_name] qspacelist (qspl) [queue_space_name] quit (q) verbose (v) [{off|on}]
> |
Ø Qmadmin 명령어 상태를 종료하려면 quit 명령을 입력한다.
> quit |
Ø TUXEDO/Q 를 사용하려면 아래와 같은 절차에 의해 Queue Device 를 생성해야 한다.
Ø 예제) /user1/CNCNN Queue Device 를 생성하는 경우
[nateifs1:/home/nate]qmadmin /user1/CNCNN qmadmin - Copyright (c) 1996 BEA Systems, Inc. Portions * Copyright 1986-1997 RSA Data Security, Inc. All Rights Reserved. Distributed under license by BEA Systems, Inc. TUXEDO is a registered trademark. QMCONFIG=/user1/CNCNN
>echo >crdl /user1/CNCNN 0 100200 <= 총 Queue Device Size(Offset=0 부터 100200 Blocks 확보) Created device … 생략 >qspacecreate Queue space name: S_CNCNN <= Queue Space 명 설정 IPC Key for queue space: 76188 <= IPC 자원사용에 대한 Key 할당 Size of queue space in disk pages: 100100 <= 총 Queue Device Size –100(관리정보 보관) Number of queues in queue space: 2 <= Queue Sapce 내에서의 Queue 의 Max 갯수 Number of concurrent transactions in queue space: 150 <= Current Transaction 의 갯수 Number of concurrent processes in queue space: 150 <= Current Process 의 갯수 Number of messages in queue space: 100000 <= Queue Space 내에서의 Message 총 갯수 Error queue name: E_CNCNN <= Error Queue 명 설정 Initialize extents (y, n [default=n]): y <= Queue Space 생성후 초기화 작업 여부 Blocking factor [default=16]: 16 <= Queue Space 내에서의 입/출력 단위 >qopen S_CNCNN >qcreate Queue name: Q_CNCNN <= 생성할 Queue 이름(일반적으로 서비스명과 동일한 이름을 부여) Queue order (priority, time, fifo, lifo): fifo <= 쌓여 있는 Message 추출방법 Out-of-ordering enqueuing (top, msgid, [default=none]): none Retries [default=0]: 2 <= Retry 횟수(Retry 상황 : TPENOENT 또는 TPFAIL 의 경우) Retry delay in seconds [default=0]: 1 <= Retry 가 발생하는 주기로서 단위는 초 High limit for queue capacity warning (b for bytes used, B for blocks used, % for percent used, m for messages [default=100%]): 80% <= Message Queue 최대 수용량 Reset (low) limit for queue capacity warning [default=0%]: 0% <= 일반적으로 0% 설정 Queue capacity command: No default queue capacity command Queue 'Q_CNCNN' created >qcreate Queue name: E_CNCNN Queue order (priority, time, fifo, lifo): fifo Out-of-ordering enqueuing (top, msgid, [default=none]): none Retries [default=0]: 2 Retry delay in seconds [default=0]: 1 High limit for queue capacity warning (b for bytes used, B for blocks used, % for percent used, m for messages [default=100%]): 80% Reset (low) limit for queue capacity warning [default=0%]: 0% Queue capacity command: No default queue capacity command Q_CAT:1438: INFO: Create queue - error queue E_CNCNN created Queue 'E_CNCNN' created >quit |
참고사항) SK NATE 에서는 Queue Device 만드는 명령을 셀 스크립트로 만들어 사용한다.
참고설명) IPC Key 할당 가능범위는 32768 < IPC Key < 262143 이다.
Initialize extents 에 ‘n’ 을 입력한 경우에는 초기화 작업이 qmadmin 의 qopen
명령으로 최초로 해당 Queue Space 를 오픈할 때 수행된다.
Out-of-ordering enqueuing 에서 top 은 해당 메시지를 Queue 의 맨 앞에 삽입하며,
Msgid 은 지정된 msgid 앞에 삽입한다.
Out-of-ordering enqueuing 사용시 해당 메시지 삽입방식을 변경하려면
해당 Queue 를 Destory 한 후에 Recreate 해야 하므로 주의깊게 설정해야 한다.
Blocking factor 는 Queue Space 생성후 초기화 작업시 Disk 입/출력단위가 된다.
Ø TUXEDO/Q 모니터링 방법
Ø Qmadmin 명령 수행시는 반드시 오픈하고자 하는 Queue Device 를 인자로 넘겨주어야 한다.
[nateifs1:/home/nate]qmadmin /user1/CNCNN |
참고설명) Queue Device 는 실제로 Physical 한 Disk File 명이다.
참고사항) SK NATE 는 Queue Device 가 여러 개 있음
Ø 대상 Queue Space 명을 지정하여 Queue Space 를 오픈한다.
>qopen S_CNCNN |
참고설명) Queue Space 명은 Logical 한 영역에 대한 이름이다.
Ø 현재 Queue 에 쌓여 있는 메시지를 보는 명령
> qinfo |
참고설명) 특정 Queue 에 있는 메시지를 보려면 qinfo 다음에 해당 Queue 을 지정한다.
Ø 특정 Queue 에 대한 Msgid 를 보고자 하는 경우
> qset Q_CNCNN > qlist |
참고설명) qset 명령으로 list 할 Queue 지정한 후에 qlist 명령을 실행한다.
Ø 특정 Queue 에 대한 메시지를 삭제하고자 하는 경우
> qset Q_CNCNN > qdeletemsg |
참고설명) qdeletemsg 명령 수행시 qscan 으로 삭제할 메시지를 제한하지 않으면 모든 메시지가
삭제되므로 qscan 명령으로 삭제 대상 메시지를 제한하도록 한다.
Ø 삭제할 메시지를 제한한 후에, 해당 메시지를 삭제하는 방법
> qset Q_CNCNN > qscan -m 1018829864.40.0 > qlist > qdeletemsg –y |
참고설명) qscan 명령으로 설정된 범위를 해제하고자 하는 경우는 qscan none 을 실행한다.
Qscan 의 상세한 설명은 TUXEDO/Q User Manual 를 참조
Ø 생성된 Queue Space 에 대한 세부내용을 보고자 하는 경우
> qspacelist S_CNCNN |
참고설명) qspacecreate 명령수행시 설정한 파라미터 값을 모두 볼 수 있다.
Ø 현재 수행중인 명령어 출력결과를 좀 더 세부적으로 보고자 하는 경우
> verbose |
참고설명) verbose Mode 는 toggle 방식으로 on/off 된다.
4. 참고사항
Ø 위 설명에서 부족한 부분은 TUXEDO/Q User Manual 를 참조한다.
'▶ Tuxedo > 기술자료' 카테고리의 다른 글
TUXEDO 시스템 에서의 서비스 타임 아웃 설정 방법 (0) | 2012.03.16 |
---|---|
TUXEDO 서버 프로그램 작성시 주의사항 (0) | 2012.03.16 |
TUXEDO MP Mode Migration 사용방법 (0) | 2012.03.16 |
TUXEDO Multithreading 과 Multicontexting 프로그래밍 사용방법 (0) | 2012.03.16 |
Tuxedo 서비스를 서버 프로세스로 Grouping하는 방안 (0) | 2012.02.29 |