내용 목차
본 장에서는 Tmax의 효율적인 관리를 위해 제공되는 관리 도구에 대해서 설명한다.
Tmax 시스템이 동작하고 있다면 현재 환경설정에 대한 정보를 확인해 보고 이를 동적으로 변경하거나 서버 프로그램에 서비스를 추가하는 등의 시스템에 대한 관리가 필요하다. 또한 제공되는 서비스 중 특정 서비스에 대하여 현재 처리 상태 즉, 몇 건의 서비스를 처리해 왔으며, 평균 처리 시간이 얼마나 되며, 몇 건의 요청이 대기하고 있는지, 그 서비스를 제공받기 위해서는 얼마나 기다려야 하는지 등의 정보를 확인할 필요가 있다. 이 정보에 따라 서버 프로세스를 더 기동하거나 종료시키는 등의 조치도 필요하다.
Tmax 시스템은 명령어 인터프리터 형태의 명령어를 이용하여 동적 시스템 관리를 할 수 있도록 tmadmin을 제공한다.
tmadmin 프로그램은 UNIX 환경의 셸과 비슷한 명령어 인터프리터이다. 항상 프롬프트(prompt) 상태로 대기 중이다가 입력되는 명령어를 해석하여 이를 실행한다. 여러 노드를 한 도메인으로 사용하는 경우 tmadmin으로 전체에 대한 중앙 관리가 가능하며, 각각의 노드별로 로컬에서 관리가 가능하다.
사용방법
$ tmadmin [-ㅣ] [-s|m] [-h] [-f [config_file]] [-n [node_name]] [-v] [-V] [-p] [-t]
옵션 | 설명 |
---|---|
[-l] | racd를 통해 여러 노드로 구성된 시스템이 중앙에서 집중 관리될 경우에 로컬 노드만을 관리하기 위해서 사용하는 옵션이다. 각각의 노드들은 이 옵션으로 자신의 시스템만을 관리할 수 있다. |
[-s] | 읽기 전용 모드로 각각의 tmadmin 툴을 10개까지 사용할 수 있는 옵션이다. 이 옵션을 사용하면 환경을 동적으로 변경시킬 수 없다. (기본값) |
[-m] | 마스터 모드로 동적으로 환경을 변경할 수 있다. 1명의 사용자만이 마스터 모드를 사용할 것을 권장한다. 1명 이상의 사용자가 환경을 변경할 경우 심각한 시스템 문제가 발생할 수 있다. 환경 파일은 변경하지 않고 정해진 매뉴얼을 따른다. |
[-h] | 명령어 도움말 옵션이다. |
[-f [config_file]] | 지정해 준 이진 파일을 관리한다. 환경 파일을 기본값인 tmconfig가 아닌 다른 이름으로 이진 파일을 생성한 경우 tmadmin을 구동할 때 이진 파일명을 지정한다. |
[-n [node_name]] | 특정 노드에 대한 모니터링이 가능하도록 한다. 멀티 노드 환경에서 tmadmin을 구동하는 경우 이 옵션을 설정하면 지정된 노드에 대한 정보만을 확인하므로 보다 편리하게 시스템을 관리할 수 있다. |
[-v] | Tmax의 버전을 확인한다. 이 옵션을 설정하면 Tmax 기동과 상관없이 어느 위치에서나 버전 확인이 가능하다. |
[ -V ] | 실행 파일의 버전을 확인할 수 있다. |
[-p] | st –p, st –s, si, ci, cfg의 명령어가 수행될 때 결과가 화면 단위로 출력되도록 하는 옵션이다(more 기능). |
[-t] | 명령어 수행에 대한 시작 및 종료시간을 출력한다. 옵션에 대한 자세한 내용은 아래 설명을 참고한다. |
-t 옵션을 주고 tmadmin을 실행하면 다음과 같은 형식으로 시간을 출력한다.
[TIME][타입 ] : hh:MM:ss:millisec
타입 | 설명 |
---|---|
START | 콘솔에서 명령어를 실행할 때 시작시간을 출력한다. |
END | 콘솔에서 명령어 실행이 종료되면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다). |
R_END | 콘솔에서 명령어 실행 시 리모트 노드의 수행이 종료되면 종료한 시간(tmadmin을 실행한 로컬의 시간으로, 리모트 노드의 시간이 아니다)을 출력한다. |
RP_START | tmadmin의 repeat 명령어를 사용하여 수행할 경우 한 건의 명령을 시작하기 전 시간을 출력한다. |
RP_END | tmadmin의 repeat 명령어를 사용하여 수행할 경우 한 건의 명령이 종료되면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다). |
tmadmin에서는 명령어를 통해 Tmax 시스템을 기동 또는 종료시킬 수 있으며, 현재 동작 중인 시스템의 환경설정 내용을 조회 및 수정할 수 있다. 또한 각 서버 프로세스의 상태와 서비스의 처리 상태 등을 확인할 수 있다.
tmadmin 프로그램은 다음과 같이 실행한다.
$tmadmin
아래와 같은 메시지와 함께 프롬프트(prompt)가 나타난다. 이것은 tmadmin 프로그램이 실행 상태임을 나타낸다.
--- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmax1 (tmadm):
tmadmin을 종료하기 위해서는 'quit'이나 'q' 명령을 사용한다.
$$1 tmax1 (tmadm):quit
다음은 tmadmin을 실행한 후 사용할 수 있는 명령어 목록이다.
환경 정보 조회
명령어 | 설명 |
---|---|
tmaxinfo(ti) | Tmax 시스템 정보를 확인한다. |
history(hist) | 이전에 저장된 명령어를 조회한다. |
config(cfg) | 환경설정 내용을 조회한다. |
configopt(cfgopt) | TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 설정의 현재 설정값을 조회한다. |
동작상태 정보 조회
명령어 | 설명 |
---|---|
stat(st) | 프로세스 및 서비스 상태의 통계를 낸다. |
gwinfo | GATEWAY 절에 정의한 게이트웨이들의 채널 상태를 확인한다. |
txgwinfo(txgwi) | Tmax 게이트웨이의 정보를 확인한다. |
nontxgwinfo | Tmax Non 트랜잭션 게이트웨이의 정보를 확인한다. |
jgwinfo | JEUS 게이트웨이의 정보를 확인한다. |
ajgwinfo | JEUS Async 게이트웨이의 정보를 확인한다. |
wsgwinfo | 웹 서비스 게이트웨이의 정보를 확인한다. |
smtrc | GID를 이용하여 해당 서비스의 수행 상태를 조회한다. |
clhsinfo | 멀티 노드 환경에서 CLH 사이의 연결 상태 정보를 확인한다. |
tmmsinfo | 멀티 노드 환경에서 TMM 사이의 연결 상태 정보를 확인한다. |
repeat(r) | 명령어를 반복한다. |
clientinfo(ci) | 접속 클라이언트를 확인한다. |
svrinfo(si) | 서버 정보를 확인한다. |
txquery(txq) | 트랜잭션 처리 정보를 확인한다. |
rqstat(rqs) | RQ의 상태를 확인하거나 디스크 큐에 쌓여있는 서비스를 처리한다. |
운용 관리
명령어 | 설명 |
---|---|
suspend(sp) | 동작 중인 서버 프로세스를 중지한다. |
resume(rs) | 중지된 서버 프로세스를 재개한다. |
advertise/unadvertise | 특정 서비스명을 advertise / unadvertise한다. |
restat | 특정 서버 프로세스 혹은 모든 서버 프로세스의 통계정보를 초기화한다. |
rebootsvr(rbs) | 서버 프로그램을 교체한다. |
cfgadd(ca) | 동적으로 서비스를 추가한다. |
set | 현재 설정된 환경설정값을 동적으로 변경한다. |
setopt | TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 환경설정값을 동적으로 변경한다. |
qpurge(qp) | 큐에 쌓인 업무를 삭제한다. |
discon(ds) | 접속 중인 클라이언트를 강제로 해제한다. |
logstart / logend | 로깅을 시작 / 종료한다. |
chtrc | Trace 관리를 한다. |
chlog | TMM, CLH, 특정 서버의 로그 레벨을 런타임 도중 동적으로 변경한다. |
txcommit / txrollback | 트랜잭션 처리 중에 장애가 발생하는 경우 Commit / Rollback을 재이슈하여 해당 트랜잭션을 종료하는 기능이다. |
wsgwreload | 웹 서비스 게이트웨이의 서비스 정보, 설정 변경을 적용한다. |
restart | 서버 프로세스를 재기동한다. |
notify_reconnect_clh(nrc) | 특정 CLH 프로세스로 재접속 하라는 통지를 서버프로세스에 전달한다. |
기타
명령어 | 설명 |
---|---|
! | 바로 전에 사용한 명령어를 반복한다. |
quit(q) | tmadmin을 종료한다. |
help(h) | 사용 가능한 옵션 리스트를 조회한다. |
nodeset(ns) | 멀티 노드 환경에서 특정 노드에 대한 정보만을 얻고자 하는 경우에 사용한다. |
nodeunset(nus) | 멀티 노드 환경에서 특정 노드에 대한 정보만을 얻고자 설정한 것을 해제한다. |
tmd | 가상의 클라이언트 애뮬레이터로서 서비스 프로그램의 유효성을 검토하는 경우 클라이언트 프로그램을 별도로 작성하지 않고 이 유틸리티를 이용한다. |
현재 접속된 Tmax 시스템의 환경 정보를 조회한다.
사용 방법
$$1 tmax1 (tmadm): ti
예제
다음과 같이 시스템 버전(version), 최대 사용자 수(maxuser) 등을 확인할 수 있다.
$$11 tmaxi7 (tmadm): ti Tmax System Info: REAL version 5.0 SP #2: maxuser = UNLIMITED, Supported maximum user per node = 1380 Supported maximum user per handler = 691 domaincount = 1, nodecount = 1, svgrpcount = 4, svrcount = 6, svccount = 11 rout_groupcount = 0, rout_elemcount = 0 cousin_groupcount = 0, cousin_elemcount = 0 backup_groupcount = 0, backup_elemcount = 0 Tmax All Node Info: nodecount = 1: ------------------------------------------------------------------ no name portno racport shmkey shmsize minclh maxclh ------------------------------------------------------------------ 0 tmaxi7 7733 3333 79120 552652 1 3
셸에서와 같이 명령어를 기억하여 편리하게 사용할 수 있다.
사용 방법
$$1 tmax1 (tmadm): history
예제
다음은 명령어 사용 예제이다.
$$15 tmax1 (tmadm): history 5 : si 4 : txq 3 : ci 2 : st -p 1 : st -s 0 : ci
느낌표(!)를 사용하면 바로 앞에서 사용했던 명령어를 반복할 수 있으며 history에서 출력된 번호를 사용하여 명령을 재실행할 수도 있다.
$$1 tmax1 (tmadm): !5 si ---------------------------------------------------------------- clh svri status count qcount qpcount emcount ---------------------------------------------------------------- 0 0 RDY 2 0 0 0 0 1 RDY 0 0 0 0 0 2 RDY 0 0 0 0 0 3 RDY 45 0 0 0
현재 동작 중인 시스템의 환경 정보를 알려준다. 환경 파일에서 정의된 도메인, 노드, 서버 그룹, 서버, 서비스별로 기본값까지 포함한 모든 환경 정보를 확인할 수 있다. 출력되는 항목에 대한 자세한 설명은 “제3장 환경 파일 설정”을 참고한다.
사용 방법
$$1 tmax1 (tmadm): config (cfg) [-d] [-n] [-g[server_group_name]] [-v[service_name]][-s [service_name]] [-w [gateway_name]] [-r] [-b] [-f] [-pr]
옵션 | 설명 |
---|---|
[-d] | 도메인에 대한 환경 정보를 조회한다. 환경 파일의 DOMAIN 절과 관련된 모든 항목 내용과 도메인에 존재하는 정보를 확인할 수 있다. |
[-n] | 전체 노드에 대한 환경 정보를 조회한다.환경 파일의 NODE 절과 관련된 모든 항목 내용과 시스템에서 내부적으로 정의된 정보를 확인할 수 있다. |
[-g [server_group_name]] | 서버 그룹에 대한 환경 정보를 조회한다. 서버 그룹명을 지정하면 그 서버 그룹에 대한 정보만을 조회하고 서버 그룹명을 지정하지 않으면 모든 서버 그룹에 대한 정보를 조회한다. 그룹별로 각 서버 그룹에 대하여 환경 파일의 SVRGROUP 절과 관련된 모든 항목 내용을 확인할 수 있다. |
[-v [service_name]] | 서버에 대한 환경 정보를 조회한다. 서버명을 지정하면 그 서버에 대한 정보만을 조회하고 서버명을 지정하지 않으면 모든 서버에 대한 정보를 출력한다. 서버별로 각 서버에 대하여 환경 파일의 SERVER 절과 관련된 모든 항목 내용과 내부적으로 정의된 서버 번호(svr_no), 서버와 관련된 데이터 의존형 라우팅 정보(ddri)를 확인할 수 있다. |
[-s [service_name]] | 서비스에 대한 환경 정보를 조회한다. 서비스명을 지정하면 그 서비스에 대한 정보만을 조회하고 이름을 지정하지 않으면 모든 서비스에 대한 정보를 출력한다. 서비스별로 각 서비스에 대하여 환경 파일의 SERVICE 절과 관련된 모든 항목 내용을 확인할 수 있다. |
[-w [gateway_name]] | 게이트웨이에 대한 환경 정보를 조회한다. 게이트웨이명을 지정하면 그 게이 트웨이에 대한 정보만을 조회하고 이름을 지정하지 않으면 모든 게이트웨이에 대한 정보를 출력한다. |
[-r] | 라우팅 환경 정보를 조회한다. |
[-b] | 백업 환경 정보를 조회한다. |
[-f] | Topend의 함수 정보를 조회한다. |
[-pr] | Topend의 product 정보를 조회한다. |
예제
다음은 도메인의 환경 정보를 확인하는 예제이다.
$$1 tmaxi7 (tmadm): cfg -d domain_name = tmax1, shmkey = 77733, minclh = 1, maxclh = 3, maxuser = UNLIMITED, portno = 7733, racport = 3377, cmtret = YES, blocktime(bt) = 30, txtime(tt) = 0, nliveinq(ni) = 30, security = NONE, cpc = 1, maxfunc = 0, clichkint = 0, idletime = 0, node_count = 2, svg_count = 2, svr_count = 4, cousin_count = 1, cousin_gcount = 3, backup_count = 0, backup_gcount = 0, rout_count = 0, rout_gcount = 0, maxsacall = 8, maxcacall = 16, nclhchkint = -1, maxconv_node = 16, maxconv_server = 8, maxnode = 32, maxsvg = 32, maxspr = 64, maxsvr = 64, maxsvc = 512, maxcpc = 32, maxtms = 32, maxrout = 16, maxroutsvg = 32, maxrq = 2, maxgw = 10, maxcousin = 16, maxcousinsvg = 32, maxbackup = 16, maxbackupsvg = 32, maxtotalsvg = 64, maxprod = 0, tipsvc = , crypt = NO maxthread = 128, tmmloglvl = DETAIL, clhloglvl = DETAIL, tmsloglvl = DETAIL, loglvl = DETAIL cllblock = NO tdl = NO
다음은 명령어를 실행하는 경우 출력되는 항목에 대한 설명이다.
항목 | 설명 |
---|---|
nodecount | 도메인에 존재하는 노드 개수이다. |
svgcount | 서버 그룹 개수이다. |
cousin_gcount | COUSIN 항목이 정의된 그룹 개수로 부하 조절을 위한 복사 서버 그룹 개수이다. |
cousin_count | 모든 복사본 서버 그룹의 개수이다. |
rout_count | ROUTING 절에 정의된 라우팅 개체의 개수이다. |
relem_count | 각 라우팅 개체의 범위 항목에 정의된 각 범위별 라우팅 단위 개수이다. |
다음은 전체 노드의 환경 정보를 확인하는 예제이다.
$$2 tmaxi7 (tmadm): cfg -n node_name = tmaxi7, hostname = tmaxi7, node_no = 1, load = 0, shmkey = 77733, minclh = 1, maxclh = 3, maxuser = UNLIMITED, Supported maximum user per node = 1380, Supported maximum user per handler = 691, clhqtimeout(cqt) = 0, portno = 7733, racport = 3377, tmaxhome = /data2/tmaxha/tmax/, tmaxdir = /data2/tmaxha/tmax/, appdir = /data2/tmaxha/tmax/appbin/, pathdir = /data2/tmaxha/tmax/path/, tlogdir = /data2/tmaxha/tmax/log/tlog/, slogdir = /data2/tmaxha/tmax/log/slog/, ulogdir = /data2/tmaxha/tmax/log/ulog/, envfile = , svgcount = 2, svrcount = 4, svccount = 4, curclh = 1, ipcperm = 1c0, clichkint = 0, idletime = 0, tmmopt = , clhopt = , tlmopt = , realsvr = , rscpc = 4, maxsvg = 32, maxsprs = 64, maxsvr = 64, maxtmss = 32, maxcpc = 32, maxgwsvr = 2, maxrqsvr = 2, maxgwcpc = 8, restart = YES, maxrstart = -1, gperiod = 86400, autobackup = YES, logoutsvc = , extport = 0, maxthread = 128, cllblock(cb) = NO, cllconnlb = RR, tdl = NO, smsupport = NO,
다음은 명령어를 실행하는 경우 출력되는 항목에 대한 설명이다.
항목 | 설명 |
---|---|
node_no | 시스템에서 내부적으로 정의된 노드 번호이다. |
svgcount | 노드 내에 존재하는 서버 그룹 개수이다. |
svrcount | 서버 개수이다. |
svccount | 서비스 개수이다. |
curclh | 노드에서 동작 중인 CLH 프로세스 개수이다. |
maxsprs | 동작 가능한 최대 서버 프로세스의 개수이다. |
maxtms | 최대 TMS 프로세스 개수이다. |
다음은 서버 그룹의 환경 정보를 확인하는 예제이다.
$$2 tmaxi7 (tmadm): cfg -g svg2 svg_name = svg2, svg_no = 3 , xaoption = , openinfo = Oracle_XA+Acc=P/scott/tiger+SesTm=60, closeinfo = , appdir = , ulogdir = , svgtype = TMAX, envfile = , tmsname = tms_ora, mintms = 2, maxtms = 3, tmstype = STD, tmsthreads = 0, tmsopt = , tmsrecovery = YES, tmsrange = DOMAIN, tmsxatime = 0, load(ld) = -9, tms starti = 0, tms endi = 2, restart = YES, maxrstart = -1, gperiod = 86400, autobackup = YES, dummy = NO, dbname = ORACLE , rmid = 0
서버의 환경 정보를 확인하는 예제이다.
$$4 tmaxi7 (tmadm): cfg -v svr2 svr_name = svr2, svr_no = 4 , svgno = 2, cursvr = 1, clopt = , seq = -1, minsvr = 1, maxsvr = 1, ulogdir = , maxqcount(mq) = -1, asqcount(aq) = -1, conv = NO, ddri = DDR_NO_ROUT, lifespan(ls) = -1, restart(rs) = YES, maxrstart(mr) = 5, gperiod(gp) = 86400, svrtype = TMAX_STD, schedule = FA, cpc = 1, dummy = NO, aus = NO, mac = NO, roc = NO, multiclh = YES
다음은 서비스의 환경 정보를 확인하는 예제이다.
$$5 tmaxi7 (tmadm): cfg -s --------------------------------------------------------------------------------- svc_name funcname prio(pr) autotran svctime(st) routno svrname svgno --------------------------------------------------------------------------------- _hms01 50 NO 0 -1 _hms01 4 TOLOWER 50 NO 0 -1 svr2 2 TOUPPER 50 NO 0 -1 svr2 2 HMS 50 NO 0 -1 svr_hms 2 FDLTOLOWER 50 NO 0 -1 svr3 2 FDLTOUPPER 50 NO 0 -1 svr3 2 FDLDEL 50 NO 0 -1 fdltest 3 FDLSEL 50 NO 0 -1 fdltest 3 FDLINS 50 NO 0 -1 fdltest 3 FDLUPT 50 NO 0 -1 fdltest 3 gw2301X 50 NO 0 -1 gw2301X 0
다음은 게이트웨이의 환경 정보를 확인하는 예제이다.
$$7 tmaxi7 (tmadm): cfg -w gw_name = gw2301X, node_no = 0, gw_no = 0, gw_type = TMAX, portno = 4020, rgwaddr = 192.168.1.89, rgwportno = 4010, backup_rgwaddr = , backup_rgwportno = -1, backup_rgwaddr2 = , backup_rgwportno2 = 0, backup_rgwaddr3 = , backup_rgwportno3 = 0, cpc = 2, timeout = 30, direction = BIDIR, maxinrgw = 32, clopt = , ptimeout = -1, ptimeint = -1, gwchkint = -1, gwconnect_timeout = -1, nliveinq = -1
TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 설정의 현재 설정값을 조회한다.
사용 방법
$$1 tmax1 (tmadm): configopt (cfgopt) [-tmm]
옵션 | 설명 |
---|---|
[-tmm] | TMMOPT 환경설정에 정의된 옵션 중 동적 변경이 가능한 옵션들의 현재 설정된 값을 확인한다. |
예제
다음은 TMMOPT 환경설정의 환경 정보를 확인하는 예제이다.
$$1 tmax1 (tmadm): cfgopt -tmm ------------------------------------------------------------------------ -tmm configurable value ------------------------------------------------------------------------ accept retry count(-A) = 100 max forked threshold(-F) = 765 booting timeout(-t) = 10 ------------------------------------------------------------------------
다음은 명령어를 실행할 경우 출력되는 항목에 대한 설명이다.
항목 | 설명 |
---|---|
accept retry count(-A) | 서버 프로세스의 접속 요청에 대해서 accept를 처리할 때 한 번에 처리할 횟수이다. TMMOPT의 -A 옵션 설명을 참조한다. |
max forked threshold(-F) | TMM에서 서버 프로세스의 추가 기동이나 프로세스 재기동 등으로 인해 새로운 프로세스를 생성할 때 동시에 처리할 수 있는 최대 개수이다. TMMOPT의 -F 옵션 설명을 참조한다. |
booting timeout(-t) | ASQCOUNT로 기동된 서버 프로세스의 접속 타임아웃 시간이다. TMMOPT의 -t 옵션 설명을 참조한다. |
실질적인 시스템 동작 상태를 나타내며, 동작 중인 서버 프로세스와 서비스에 대한 정보를 알 수 있다. 서버 프로세스의 현재 상태, 처리 중인 서비스명, 처리한 서비스 개수, 서비스에 대한 상태, 서비스 큐에 존재하는 서비스 요청 개수 등과 같은 동적인 정보를 확인할 수 있다. stat 명령어의 약어는 st이다.
사용 방법
$$1 tmax1 (tmadm): stat (st) [-p [server_process_name]] [-s [service_name]] [-t [TMS_name]] [-v [server_process_name] [-pod]] [-o [sort할 조건]] [-n [출력되는 메시지 라인]] [-x] [-X] [-q [destination_name [-c]]]
옵션 | 설명 |
---|---|
[-p [server_process_name]] | 서버 프로세스에 대한 정보를 조회한다. Tmax 환경 파일에 등록된 서버는 MIN과 MAX 항목을 사용하여 여러 개 동작할 수 있는데, 이들 각각의 동작 상황을 확인할 수 있다. 서버명을 지정하면 해당 서버명의 서버 프로세스들에 관한 정보들이 출력되고, 이름을 지정하지 않으면 동작 중인 모든 서버 프로세스들에 대한 정보가 출력된다. 'st –p' 명령의 마지막 라인에 총 처리 건수, 전체 평균 처리시간, 현재 수행 중인 총 서비스 개수 통계 정보를 출력하여 시스템 처리 현황을 파악할 수 있다. |
[-s [service_name]] | 서비스에 대한 정보를 조회한다. 서비스명을 지정하면 해당 서비스에 관한 정보만 출력되고, 서비스명을 지정하지 않으면 제공되는 모든 서비스에 관한 정보들이 출력된다. |
[-t [TMS_name]] | 시스템에서 제공하는 TMS에 대한 동적 정보를 알려준다. TMS명을 지정하면 해당 TMS에 관한 정보만 출력되고 TMS명을 지정하지 않으면 제공되는 모든 TMS에 관한 정보가 출력된다. |
[-v [server_process_name] [-pod]] | 서버 프로세스에 대한 정보를 조회한다(si와 동일). [-pod] 옵션을 사용하면 POD 서버의 상태 부분에 항상 "(POD)" 가 출력된다. 이 옵션이 없으면 POD 서버의 상태가 기동시에는 RDY, 미기동시에는 NRDY로 표시된다. POD 서버는 NRDY 상태이더라도 서비스 요청시 자동으로 기동되어 처리되므로 상태가 중요하지 않으며, 모니터링시 문제인 서버로 오해할 수 있다. 이 옵션을 사용하여 불필요한 오해를 줄일 수 있다. |
[-o [sort할 조건]] | [–o] 옵션은 특정 조건을 기준으로 조회 결과를 sort하여 출력하기 위한 옵션이다. Tmax 시스템에서 제공하는 서버 프로세스와 서비스에 대한 동적 정보를 조회할 경우 특정 조건을 바탕으로 sort해서 원하는 정보를 볼 수 있다. 반드시 [–p] 옵션이나 [–s] 옵션과 함께 사용되어야 한다. sort는 내림차순, 오름차순으로 설정이 가능하다.
|
[-n [출력되는 메시지 라인]] | sort되어 출력되는 메시지 라인을 지정할 수 있다. sort되어 출력되는 메시지 라인(서버 프로세스 또는 서비스의 개수)을 지정하는 옵션으로 반드시 [–o] 옵션과 함께 사용되어야 한다. |
[-x] | 'st –p' 또는 'st –s' 명령어를 이용하여 서버 프로세스나 서비스의 상태를 조회와 다음의 항목을 추가적으로 조회한다. 반드시 [–s] 옵션이나 [–p] 옵션과 함께 사용해야 한다. 자세한 내용은 상세 정보(-x)를 참고한다.
|
[-X] |
|
[-q [destination_name]] | HMS destination에 대한 정보를 보여준다. 환경설정 파일에서 설정한 destination의 목록과 각 destination에서 처리 중인 메시지와 클라이언트의 정보를 확인할 수 있다. |
[ -d ] | 서버 프로세스를 조회(st -p)할 때 서버 프로세스가 RUN 상태일 때 경과시간이 표시된다. 그 외의 상태일 경우 '-'로 표시된다. (예: st -p -d ) 반드시 st -p와 함께 사용해야 되며 st -p -x와는 함께 사용할 수 없다. |
예제
다음은 서버 프로세스의 정보를 확인하는 예제이다.
$$1 tmax1 (tmadm): st –p CLH 0 : - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr_name svgname spr_no status count avg svc - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr1 svg1 1 RDY 1 0.001 -1 svr2 svg1 2 RDY 1 0.001 -1 svr3 svg1 3 RDY 1 0.001 -1 syncrtn svg1 4 RDY 1 0.001 -1 syncrtn svg1 5 RDY 1 0.001 -1 ucs svg1 6 RDY 1 0.001 -1 ucs svg1 7 RDY 1 0.001 -1 ucs svg1 8 RDY 1 0.001 -1 _rqsvg rqsvg1 9 RDY 1 0.001 -1 _rqsvg rqsvg1 10 RDY 1 0.001 -1 TOTAL COUNT = 1 TOTAL AVG = 0.001 TOTAL RUNNING COUNT = 0
다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.
항목 | 설명 |
---|---|
svr_name | 서버 프로세스명이다. |
svgname | 서버 프로세스가 속해있는 서버 그룹명이다. |
spr_no | 각 서버별 프로세스의 ID이다. |
status | 서버 프로세스의 현재 상태로 자세한 설명은 다음의 [시스템 동작 상태]를 참고한다. |
count | 처리한 서비스 개수이다. |
avg | 프로세스의 평균 처리시간이다. |
svc | 처리 중인 서비스명이다. 현재 처리 중인 서비스가 없는 경우 -1로 표시된다. |
다음은 시스템 동작 상태를 볼 수 있는 st의 명령으로 나타나는 결과에서 status 항목에 표시되는 내용에 대한 설명이다.
st 명령어는 와일드 카드도 사용할 수 있다. st –p s*을 입력하면 s로 시작하는 svr_name에 관한 정보만을 조회된다.
$$1 tmax1 (tmadm): st –p s* - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr_name svgname spr_no status count avg svc - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr1 svg1 1 RDY 0 0.000 -1 svr2 svg1 2 RDY 0 0.000 -1 svr3 svg1 3 RDY 0 0.000 -1 syncrtn svg1 4 RDY 0 0.000 -1 syncrtn svg1 5 RDY 0 0.000 -1
다음은 서비스의 정보를 확인하는 예제이다.
$$1 tmax1 (tmadm): st –s CLH 0: - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svc_name svr_name count avg cq_count aq_count q_avg status - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - FORW svr1 0 0.000 0 0 0.000 RDY COMVER svr1 3 0.670 0 0 0.000 RDY REGIST svr1 0 0.000 0 0 0.000 RDY VIEW svr1 0 0.000 0 0 0.000 RDY SYNC svr1 10 0.000 0 0 0.000 RDY ASYNC svr1 0 0.000 0 0 0.000 RDY CONVER_R svr1 0 0.000 0 0 0.000 RDY
다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.
항목 | 설명 |
---|---|
svc_name | 서비스명이다. |
svr_name | 서비스가 속한 서버명이다. |
count | 처리한 서비스 건수이다. |
avg | 서비스의 평균 처리시간이다. |
cq_count | 현재 대기 중인 서비스 요청 건수이다. |
aq_count | 잠시라도 대기했던 총 서비스 요청 건수이다. |
q_avg | 서비스의 평균 대기시간이다. |
status | 서비스의 현재 상태이다. 상태에 대한 자세한 설명은 [시스템 동작 상태]를 참고한다. |
와일드 카드를 사용해서 'st -s *W'를 입력하면 W로 끝나는 서비스에 대한 정보만 조회된다.
$$1 tmax1 (tmadm): st –s *W CLH 0: - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svc_name svr_name count avg cq_count aq_count q_avg status - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - FORW svr1 0 0.000 0 0 0.000 RDY VIEW svr1 0 0.000 0 0 0.000 RDY
다음은 서비스의 정보를 확인하는 예제이다.
$$1 tmax1 (tmadm): st -t CLH 0: ---------------------------------------------------------------- tms_name svgname spr_no status count avg cqcount ---------------------------------------------------------------- tms_ora svg1 0 RDY 5 0.00 2 tms_ora svg1 1 RDY 4 0.00 ( 1)
다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.
항목 | 설명 |
---|---|
tms_name | TMS명이다. |
svgname | TMS가 속해 있는 서버 그룹명이다. |
spr_no | TMS의 프로세스 ID이다. |
status | TMS의 현재 상태로 자세한 설명은 [시스템 동작 상태]를 참고한다. |
count | 처리한 TMS의 건수이다. |
avg | TMS의 평균 처리시간이다. |
cqcount | 현재 대기 중인 요청 건수이다. |
TMS가 multi thread TMS일 경우에는 각 thread의 상태를 조회할 수 있다.
$$1 tmax1 (tmadm): st -t -x CLH 0: ---------------------------------------------------------------- tms_name svgname spr_no(tid) status count avg cqcount XID xastate ---------------------------------------------------------------- tms_ora_mt svgora1 0 RUN 0 0.00 0 000:000:13505 commit tms_ora_mt svgora1 0( 1) RDY 0% 0.00 ( 0) 000:000:00000 - tms_ora_mt svgora1 0( 2) RDY 0% 0.00 ( 0) 000:000:00000 - ---------------------------------------------------------------- tms_ora_mt svgora1 1 RDY 0 0.00 ( 0) 000:000:00000 - tms_ora_mt svgora1 1( 1) RDY 0% 0.00 ( 0) 000:000:00000 - tms_ora_mt svgora1 1( 2) RDY 0% 0.00 ( 0) 000:000:00000 - ---------------------------------------------------------------- tms_ora_mt svgora2 10 RDY 0 0.00 0 000:000:00000 - tms_ora_mt svgora2 10( 1) RDY 0% 0.00 ( 0) 000:000:00000 - tms_ora_mt svgora2 10( 2) RDY 0% 0.00 ( 0) 000:000:00000 - ---------------------------------------------------------------- tms_ora svgora3 20 RDY 0 0.00 0 000:000:00000 - ---------------------------------------------------------------- tms_ora svgora3 21 RDY 0 0.00 ( 0) 000:000:00000 - ----------------------------------------------------------------
다음은 'st –p' 명령어와 함께 사용된 예제이다.
$$20 tmaxi7 (tmadm): st -p -x CLH 0: --------------------------------------------------------------------------- svr_name svgname spr_no status count avg svc PID fail_cnt err_cnt min_time max_time utime umin_time umax_time stime smin_time smax_time --------------------------------------------------------------------------- gw2301X gw2301X 32 RDY 0 0.000 -1 60817498 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 svr2 svg1 36 RDY 3 0.006 -1 7602750 0 0 0.000 0.018 0.000 0.000 0.000 0.000 0.000 0.000 --------------------------------------------------------------------------- TOTAL COUNT = 3 TOTAL SVCFAIL COUNT = 0 TOTAL ERROR COUNT = 0 TOTAL AVG = 0.006 TOTAL RUNNING COUNT = 0
다음은 'st –s' 명령어와 함께 사용된 예제이다.
$$1 tmax1 (tmadm): st -s -x CLH 0: ----------------------------------------------------------------------------------------------- svc_name svr_name count cq_cnt aq_cnt q_avg avg status fail_cnt err_cnt mintime maxtime utime umin_time umax_time stime smin_time smax_time ----------------------------------------------------------------------------------------------- INSERT2 xagwtest2 0 0 0 0.000 0.000 RDY 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.
항목 | 설명 |
---|---|
PID | 서버프로세스의 PID이다. |
fail_cnt | 서버프로세스/서비스의 FAIL COUNT이다. |
err_cnt | 서버프로세스/서비스의 ERROR COUNT이다. |
mintime | 서비스를 처리한 최소 시간이다. |
maxtime | 서비스를 처리한 최대 시간이다. |
utime | 서버 프로세스에서 매번 서비스 처리시마다 소모한 user time 값이다. |
umin_time | user time의 최소 소모시간입니다. |
umax_time | user time의 최대 소모시간입니다. |
stime | 서버 프로세스에서 매번 서비스 처리시마다 소모한 system time 값이다. |
smin_time | system time의 최소 소모시간입니다. |
smax_time | system time의 최대 소모시간입니다. |
다음은 'st –p' 명령어에 [-o] 옵션을 사용한 예제이다.
$$1 tmax1 (tmadm): st –p –o ca CLH 0 : - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr_name svgname spr_no status count avg svc - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr2 svg1 37 RDY 10 0.000 -1 svr1 svg1 36 RDY 6 0.000 -1 svr3 svg1 38 RDY 2 0.000 -1 TOTAL COUNT = 18 TOTAL AVG = 0.000 TOTAL RUNNING COUNT = 0
다음은 'st –s' 명령어에 [-o] 옵션을 사용한 예제이다.
$$1 tmax1 (tmadm): st –s –o ca CLH 0: - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svc_name svr_name count avg cq_count aq_count q_avg status - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - TOUPPER svr2 10 0.000 0 0 0.000 RDY SDLTOUPPER svr1 5 0.000 0 0 0.000 RDY FDLTOUPPER svr3 2 0.000 0 0 0.000 RDY SDLTOLOWER svr1 1 0.000 0 0 0.000 RDY FDLTOLOWER svr3 0 0.000 0 0 0.000 RDY TOLOWER svr2 0 0.000 0 0 0.000 RDY
내림 차순 조건
조건 | 설명 |
---|---|
ca | 처리한 건수(count) |
aa | 평균 처리 시간(avg) |
cq | 현재 큐잉 건수(cq_count) |
aq | 평균 큐잉 건수(aq_count) |
qa | 평균 큐잉 시간(q_avg) |
ce | 각 서버별 처리 건수를 기준으로 서버별로 sort |
ae | 각 서버별 평균 처리 시간을 기준으로 서버별로 sort |
오름 차순 조건
조건 | 설명 |
---|---|
ca- | 처리한 건수(count) |
aa- | 평균 처리 시간(avg) |
cq- | 현재 큐잉 건수(cq_count) |
aq- | 평균 큐잉 건수(aq_count) |
qa- | 평균 큐잉 시간(q_avg) |
ce- | 각 서버별 처리 건수를 기준으로 서버별로 sort |
ae- | 각 서버별 평균 처리 시간을 기준으로 서버별로 sort |
다음은 출력 메시지의 라인 수를 2로 설정한 예제이다.
$$1 tmax1 (tmadm): st –p –o ca –n 2 CLH 0 : - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr_name svgname spr_no status count avg svc - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svr2 svg1 37 RDY 10 0.000 -1 svr1 svg1 36 RDY 6 0.000 -1 TOTAL COUNT = 18 TOTAL AVG = 0.000 TOTAL RUNNING COUNT = 0
다음은 출력 메시지의 라인 수를 3으로 설정한 예제이다.
$$1 tmax1 (tmadm): st –s –o ca –n 3 CLH 0: - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - svc_name svr_name count avg cq_count aq_count q_avg status - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - TOUPPER svr2 10 0.000 0 0 0.000 RDY SDLTOUPPER svr1 5 0.000 0 0 0.000 RDY FDLTOUPPER svr3 2 0.000 0 0 0.000 RDY
다음은 HMS destination 정보 조회하는 예제이다.
$$1 tmax1 (tmadm): st -q ---------------------------------------------------------------------------------- G dest cqcount type apqcnt acqcnt f_dscrd t_dscrd cons_cnt prod_cnt ---------------------------------------------------------------------------------- - queue01 58 QUEUE 169 111 0 0 30 5 - topic01 32 TOPIC 42 283 0 0 28 3
다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.
항목 | 설명 |
---|---|
G | 해당 destination이 GLOBAL로 설정된 경우 'O'로 표시되고, GLOBAL이 아닌 경우 하이픈(-)으로 표시된다. |
dest | destination의 이름으로 환경설정 파일에서 HMS 절에 설정된 이름이 표시된다. |
cqcount | 해당 destination에서 아직 처리되지 않은 메시지 건수이다. |
type | 해당 destination의 타입을 표시한다. QUEUE와 TOPIC으로 표시된다. |
apqcnt | 현재까지 전송되어 누적된 총 메시지 건수이다. |
acqcnt | 소비자에 의해 처리된 메시지의 총 건수로 Topic 타입은 하나의 메시지에 대해서 모든 소비자가 수신받아야 처리가 완료되므로 apqcnt보다 acqcnt가 커질 수 있다. |
f_dscrd | 수신받은 메시지에 대해서 failed 처리를 하여 수신이 실패된 메시지 건수이다. |
t_dscrd | 메시지를 전송에 TTL이 설정된 경우, 유효시간이 지나 실패된 메시지 건수이다. |
cons_cnt | 해당 destination에 접속한 소비자(consumer)의 수이다. |
prod_cnt | 해당 destination에 접속한 생산자(producer)의 수이다. |
다음은 특정 destination에 대한 클라이언트 상세 정보를 조회하는 예제이다.
$$1 tmax1 (tmadm): st -q queue01 -c ------------------------------------------------------------------------------ sesi clid cname clitype qcnt cnt f_dscrd t_dscrd listener ------------------------------------------------------------------------------ 0 0x39d prodasync ARCV 49 0 0 0 ASYNCSVC 0x1 0 prod41 SND 0 32 0 0 0x1 0 prod42 SND 0 11 0 0 0x1 0 cons51 RCV 3 0 0 0 0x1 0 cons52 RCV 9 0 0 0 $$2 tmax1 (tmadm): st -q topic01 -c ------------------------------------------------------------------------------ sesi clid cname clitype qcnt cnt f_dscrd t_dscrd listener ------------------------------------------------------------------------------ 0x1 0 prod11 PUB 0 2 0 0 0x1 0 prod12 PUB 0 1 0 0 0x1 0 cons11 SUB 30 0 0 0 0x2 0x2 prod21 PUB 0 16 0 0 0x2 0x2 prod22 PUB 0 8 0 0 0x2 0x2 cons21 SUB 23 0 0 0 0x3 0 prod31 PUB 0 3 0 0 0x4 0x4 cons41 ADSUB 32 0 0 0 ASYNCSVC2
다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.
필드 | 설명 |
---|---|
sesi | 해당 클라이언트를 생성한 세션의 번호이다. |
clid | 클라이언트 ID이다. |
cname | 클라이언트명이다. |
clitype | 해당 데스티네이션에 연결된 클라이언트의 종류이다. |
qcnt | 각 구독자들이 실제로 가지고 있는 메시지 건수이다. |
cnt | 각 클라이언트가 전송하거나 수신한 메시지 건수이다. |
f_dscrd | 수신 후 메시지를 failed로 처리하여 실패된 메시지 건수이다. |
t_dscrd | 전송할 때 설정한 TTL(유효시간)이 지나서 실패 처리된 메시지 건수이다. |
listener | ASYNC 세션으로 생성한 소비자(consumer)의 경우 메시지를 수신할 서비스명이다. |
tmadmin에서 리모트 게이트웨이와의 연결 상태를 확인할 수 있는 명령어이다. 이와 더불어 현재 메인 노드와 연결되어 있는지, 백업 노드와 연결되어 있는지, 어떤 노드와 연결되어 있는지의 상세한 정보를 확인할 수 있다.
모든 게이트웨이의 연결 정보를 확이할 수 있다(예외로, 웹 서비스 게이트웨이는 지원하지 않는다).
사용 방법
$$1 tmax1 (tmadm): gwinfo [-w gw_name] [-t gw_type]
옵션 | 설명 |
---|---|
[-w gw_name] | 특정 게이트웨이만 정보를 조회한다. gw_name은 GATEWAY 절에 설정한 이름이다. |
[-t gw_type] | 특정 게이트웨이 종류만을 조회한다. GATEWAY 절에 정의하는 TYPE(TMAX, TMAXNONTX, JEUS, JEUS_ASYNC, TUXEDO, TUXEDO_ASYNC, XAGW)으로 입력한다. (예: TMAX) |
예제
다음은 gwinfo 명령의 사용 예제로, 연결된 노드가 메인 노드인지 백업 노드인지에 따라 조회결과가 달라진다.
메인 노드에 연결된 경우
10/user2/starbj81>tmadmin --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxs1 (tmadm): gwinfo ---------------------------------------------------------------- gw_no channel type foreign_address status ---------------------------------------------------------------- 0 OUTCH PRIM tmaxc1(192.168.1.12:9400) RDY 1 OUTCH PRIM tmaxc1(192.168.1.12:9400) RDY 4 INCH - tmaxc1(192.168.1.12:1434) RDY 5 INCH - tmaxc1(192.168.1.12:1436) RDY 6 INCH - tmaxh2(192.168.1.48:58094) RDY 7 INCH - tmaxh2(192.168.1.48:58093) RDY
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
gw_no | 게이트웨이 번호이다. |
channel | 채널이 INBOUNT인지, OUTBOUND인지를 표시한다. |
type | 현재 메인과 연결되어 있는지 백업과 연결되어 있는지를 표시한다. |
foreign_address | 연결되어 있는 리모트 게이트웨이의 IP 주소이다. |
status | webt, jtmax, webtasync 와의 연결상태이다. 상태에 대한 자세한 설명은 [시스템 동작 상태]를 참고한다. |
백업 노드에 연결된 경우
$$1 tmax1 (tmadm): gwinfo ---------------------------------------------------------------- gw_no channel type foreign_address status ---------------------------------------------------------------- 0 OUTCH BACK tmaxh2(192.168.1.48:9200) RDY 1 OUTCH BACK tmaxh2(192.168.1.48:9200) RDY 6 INCH - tmaxh2(192.168.1.48:58091) RDY 7 INCH - tmaxh2(192.168.1.48:58092) RDY
tmadmin에서 리모트 게이트웨이와의 연결 상태를 확인할 수 있는 명령어이다. 이와 더불어 현재 메인 노드와 연결되어 있는지, 백업 노드와 연결되어 있는지, 어떤 노드와 연결되어 있는지의 상세한 정보를 확인할 수 있다.
txgwinfo(txgwi)는 Tmax 게이트웨이의 정보를 확인하며, nontxgwinfo(ntxgwi)는 Tmax Non 트랜잭션(TMAXNONTX) 게이트웨이의 정보를 확인한다.
사용 방법
txgwinfo
$$1 tmax1 (tmadm): txgwinfo
nontxgwinfo
$$1 tmax1 (tmadm): nontxgwinfo
예제
다음은 명령어 사용 예제이다.
txgwinfo
10/user2/starbj81>tmadmin --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxs1 (tmadm): txgwinfo ---------------------------------------------------------------- gw_no channel type foreign_address status ---------------------------------------------------------------- 0 OUTCH PRIM tmaxc1(192.168.1.12:9400) RDY 1 OUTCH PRIM tmaxc1(192.168.1.12:9400) RDY 4 INCH - tmaxc1(192.168.1.12:1434) RDY 5 INCH - tmaxc1(192.168.1.12:1436) RDY 6 INCH - tmaxh2(192.168.1.48:58094) RDY 7 INCH - tmaxh2(192.168.1.48:58093) RDY
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
gw_no | 게이트웨이 번호이다. |
channel | 채널이 INBOUNT인지, OUTBOUND인지를 표시한다. |
type | 현재 메인과 연결되어 있는지 백업과 연결되어 있는지를 표시한다. |
foreign_address | 연결되어 있는 리모트 게이트웨이의 IP 주소이다. |
status | webt, jtmax, webtasync와의 연결상태이다. 상태에 대한 자세한 설명은 [시스템 동작 상태]를 참고한다. |
nontxgwinfo
다음은 백업 노드와 연결되어 있을 경우의 예제이다.
$$1 tmax1 (tmadm): nontxgwinfo ---------------------------------------------------------------- gw_no channel type foreign_address status ---------------------------------------------------------------- 0 OUTCH BACK tmaxh2(192.168.1.48:9200) RDY 1 OUTCH BACK tmaxh2(192.168.1.48:9200) RDY 6 INCH - tmaxh2(192.168.1.48:58091) RDY 7 INCH - tmaxh2(192.168.1.48:58092) RDY
tmadmin에서 JTmax나 WebtAsync와의 연결 상태를 확인할 수 있는 명령어이다. 이와 더불어 현재 메인과 연결되어 있는지 백업과 연결되어 있는지 상세한 정보를 확인할 수 있다. jgwinfo는 Java(JEUS) 게이트웨이의 정보를 확인하며, ajgwinfo는 Async Java(ASYNC_JEUS) 게이트웨이의 정보를 확인한다.
사용 방법
jgwinfo
$$1 tmax1 (tmadm): jgwinfo
ajgwinfo
$$1 tmax1 (tmadm): ajgwinfo
예제
jgwinfo
다음은 명령어 사용 예제이다.
10/user2/starbj81>tmadmin --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxs1 (tmadm): jgwinfo ------------------------------------------------------------------------------- gw_no name channel type foreign_address status ------------------------------------------------------------------------------- 0 gw1 OUTCH PRIM unknown(192.168.35.47:6555) RDY
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
gw_no | 게이트웨이 번호이다. |
name | 게이트웨이명이다. |
channel | INBOUNT channel인지, OUTBOUND channel인지를 표시한다. |
type | 현재 메인과 연결되어 있는지, 백업과 연결되어 있는지를 표시한다. |
foreign_address | 연결되어 있는 리모트 게이트웨이의 IP 주소이다. |
status | webt, jtmax, webtasync와의 연결상태이다. 상태에 대한 자세한 설명은 [시스템 동작 상태]를 참고한다. |
ajgwinfo
다음은 백업과 연결되어 있을 경우의 예제이다.
10/user2/starbj81>tmadmin --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmax1 (tmadm): ajgwinfo ------------------------------------------------------------------------------- gw_no name channel type foreign_address status ------------------------------------------------------------------------------- 1 gw2 OUTCH BACK unknown(192.168.35.47:6555) RDY
tmadmin에서 웹 서비스 게이트웨이의 상태를 확인할 수 있는 명령어이다.
사용 방법
$$1 tmax1 (tmadm): wsgwinfo [-i svrid[ svrid]]
옵션 | 설명 |
---|---|
[-i svrid [ svrid]] | 확인할 svrid 리스트를 입력한다. |
예제
다음은 명령어 사용 예제이다.
10/user2/starbj81>tmadmin --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxs1 (tmadm): wsgwinfo ------------------------------------------------------------------------ svrid load_time current_client max_attach_time ------------------------------------------------------------------------ 2 Wed Jan 13 12:43:39 2010 0 0.0sec ------------------------------------------------------------------------
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
svrid | 게이트웨이의 svr index이다. |
load_time | 웹서비스 게이트웨이가 부트된 시간이다. |
current_client | 현재 접속 중인 클라이언트 수이다. |
max_attach_time | 한 서비스를 처리하기까지 걸린 최장 시간이다. |
환경 파일 NODE 절의 SMSUPPORT가 'Y'로 설정되어 있을 경우, 'st –p –x'를 실행하면 수행 중인 서비스에 대해서 해당 GID를 출력한다.
사용 방법
$$1 tmax1 (tmadm): smtrc [-a] GID0 GID1
항목 | 설명 |
---|---|
[-a] | 기존 정보 외에 서버 프로세스 인덱스(spri), 사용자 CPU 사용 시간, 시스템 CPU 사용 시간, 반환 정보 등을 모두 표시한다 |
GID0 | SysMaster의 GID 상위 4Byte를 Hexa decimal로 표기한다. |
GID1 | SysMaster의 GID 하위 4Byte를 Hexa decimal로 표기한다. |
예제
다음은 'st –p –x'를 수행한 후 서비스에 대해서 해당 GID를 출력하기 위해 smtrc를 수행하는 예제이다.
$$1 tmax1 (tmadm): st –p -x CLH 0: -------------------------------------------------------------- svr_name svgname spr_no status count avg svc PID fail_cnt err_cnt min_time max_time SysMaster_GID -------------------------------------------------------------- evtsvr svg1 36 RDY 0 0.000 -1 17980 0 0 0.000 0.000 00000000-00000000-00000000 svr1 svg1 37 RUN 0 0.000 SDLTOUPPER 17981 0 0 0.000 0.000 00000000-00000101-00000000 svr2 svg1 38 RUN 0 0.000 SDLTOUPPER2 17982 0 0 0.000 0.000 00000000-00080101-00000000 svr3 svg1 39 RUN 0 0.000 SDLTOUPPER3 17983 0 0 0.000 0.000 00000000-00100101-00000000 svr_sys svg1 40 RDY 3 0.000 -1 17984 0 0 0.000 0.000 00000000-00000000-00000000 ---------------------------------------------------------------- TOTAL COUNT = 3 TOTAL SVCFAIL COUNT = 0 TOTAL ERROR COUNT = 0 TOTAL AVG = 0.000 TOTAL RUNNING COUNT = 3 $$1 tmax1 (tmadm): smtrc 0 0101 CLH 0: ------------------------------------------------------------- sysmaster_global_id status svc_name ------------------------------------------------------------- 00000000:00000101:00000000 SVC_RUNNING SDLTOUPPER2 45670701 tmaxi1 (tmadm): smtrc -a 0 0101 CLH 0: ---------------------------------------------------------------- sysmaster_global_id status svc_name ctime svctime spri ucpu scpu ---------------------------------------------------------------- 00000000:00000101:00000000 SVC_RUNNING SDLTOUPPER2 14:05:32:159 0.000 38 0.000 0.000 00000000:00000101:00010000 SVC_RUNNING SMTRACE 14:05:32:159 0.000 40 0.000 0.000 00000000:00000101:00010000 SVC_DONE SMTRACE 14:05:32:159 0.000 40 0.000 0.000
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
sysmaster_global_id | SysMaster의 gid이다. |
status | 서비스 상태이다. |
svc_name | 서비스명이다. |
ctime | 로그를 생성한 시간이다. |
svctime | 서비스 수행시간이다. |
spri | 서비스를 실행한 서버 프로세스 인덱스이다. |
ucpu | 사용자 cpu time 이다. |
scpu | 시스템 cpu time 이다. |
clhsinfo는 멀티 노드 환경에서 각각의 CLH 사이 연결 상태 정보를 확인할 수 있다. 멀티 노드 환경에서는 서로 다른 노드 간의 연결이 반드시 이루어져야 한다. 하지만 방화벽이나 장비 노후로 인해 네트워크가 불안정한 경우에는 노드 사이의 연결이 끊어져 정상적인 서비스가 이루어질 수 없는 경우가 있다. 이와 같은 문제를 확인할 수 있는 명령어로 clhsinfo, tmmsinfo가 추가되었다.
사용 방법
$$1 tmax1 (tmadm): clhsinfo
예제
다음은 minclh =1, maxclh=2로 설정한 경우 clhsinfo를 사용한 예제이다.
tmaxh4@starbj81:/EMC01/starbj81/tmax/config>tmadmin TMADMIN for rnode (tmaxh2): starting to connect to RAC --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxh4 (tmadm): clhsinfo CLH 0: --------------------------------------- nodename clhno cpc status --------------------------------------- tmaxh2 0 2 RDY tmaxh2 1 0 NRDY --------------------------------------- CLH 1 is not available Msg from rnode(tmaxh2): CLH 0: --------------------------------------- nodename clhno cpc status --------------------------------------- tmaxh4 0 2 RDY tmaxh4 1 0 NRDY --------------------------------------- CLH 1 is not available
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
nodename | 노드명이다. |
clhno | CLH 번호이다. |
cpc | CPC 번호이다. |
status | 노드의 상태이다. 노드 상태에 대한 자세한 설명은 [노드 동작 상태]의 설명을 참고한다. |
[노드 동작 상태]
tmmsinfo 명령어는 멀티 노드 환경에서 TMM 사이 연결 상태 정보를 확인할 수 있다.
사용 방법
$$1 tmax1 (tmadm): tmmsinfo
예제
다음은 명령어 사용 예제이다.
tmaxh4@starbj81:/EMC01/starbj81/tmax/config>tmadmin TMADMIN for rnode (tmaxh2): starting to connect to RAC --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxh4 (tmadm): tmmsinfo ------------------------------------------ no nodename livectime status ------------------------------------------ 1 tmaxh2 13:53:53 RDY Msg from rnode(tmaxh2): ------------------------------------------ no nodename livectime status ------------------------------------------ 0 tmaxh4 13:53:08 RDY
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
no | TMM 번호이다. |
nodename | 노드명이다. |
livectime | 최근 채널 사용 시간이다. |
status | 노드의 상태로 자세한 설명은 [노드 동작 상태]의 설명을 참고한다. |
repeat은 상태 정보 반복 표시 기능으로 다음의 방식으로도 사용될 수 있다. 반복적인 명령어 수행은 상태 정보를 모니터링할 뿐 아니라 업무 수행에 대한 디버깅에도 많은 도움을 줄 수 있다.
사용 방법
$$1 tmax1 (tmadm): r -k n -i s 반복 수행 명령어
항목 | 설명 |
---|---|
-k n | n번 반복 수행한다. |
-i s | s초 간격으로 반복 수행한다. |
반복 수행 명령어 | 반복할 대상 명령어를 지정한다. |
예제
다음은 5초의 간격을 두고 'st -s'를 30번 수행하는 것을 반복하는 예제이다.
$$1 tmax1 (tmadm): r -k 30 -i 5 st -s
다음은 5초의 간격을 두고 'st -p'를 30초간 수행하는 것을 반복하는 예제이다.
$$1 tmax1 (tmadm): r -k 30 -i 5 st -p
현재 접속된 클라이언트의 환경 정보를 조회한다.
사용 방법
$$1 tmax1 (tmadm): ci [–s]
옵션 | 설명 |
---|---|
[-s] | 연결된 총 클라이언트의 개수를 파악할 수 있다. |
예제
다음은 명령어 사용 예제이다.
$$1 tmax1 (tmadm): ci CLH 0: --------------------------------------------------------------------------- cli_id clid status count lastin_time ipaddr usrname --------------------------------------------------------------------------- 0 0x00200000 RDY 0 10 192.168.1.43 1 0x00200001 RDY 0 91 192.168.1.43 tmax
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
cli_id | 클라이언트 ID이다. |
clid | 노드번호+CLH번호+cli_id 를 조합한 16진수 값이다. |
status | 클라이언트의 현재 상태로 자세한 설명은 [클라이언트 동작 상태]의 설명을 참고한다. |
count | 서비스 처리 건수이다. |
lastin_time | 클라이언트가 서비스 호출 후 대기하는 시간이다. |
ipaddr | 클라이언트의 접속 IP 주소이다. |
usrname | TPSTART_T 구조체의 usrname 필드에 정의한 사용자명이다. |
[클라이언트 동작 상태]
다음은 출력 항목 중 status 항목에서 확인할 수 있는 상태이다.
비정상적으로 연결된 클라이언트가 CLH에 무한정 연결되어 있을 경우 다른 클라이언트가 접속하지 못하는 현상이 발생할 수 있다. CLH에서 소켓 연결 이후 60초 이내에 TPSTART 연결 메시지가 오지 않는 클라이언트에 대해서는 자동으로 연결을 종료한다. 클라이언트 연결을 종료할 때 다음과 같은 에러가 발생한다.
(I) CLH0209 internal error : disconnect client because client didn't send tpstart msg for 60 sec.(192.168.1.43) [CLH0058]
현재 동작 중인 각 서버의 정보를 알려준다.
사용 방법
$$1 tmax1 (tmadm): si
예제
다음은 명령어 사용 예제이다.
$$5 tmaxs1 (tmadm): si - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - clh svrname (svri) status count qcount qpcount emcount - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 scoresdl ( 0) NRDY 0 0 0 0 0 bank2 ( 1) RDY 0 0 0 0 0 svr1 ( 2) RDY 0 0 0 0 0 svr2 ( 2) RDY 0 0 0 0 0 svr3 ( 2) NRDY 0 0 0 0 0 api ( 2) RDY 0 0 0 0 0 syncrtn ( 2) RDY 0 0 0 0 0 ucs ( 2) NRDY 0 0 0 0 0 ucssvr ( 2) RDY 0 0 0 0 0 broad ( 2) NRDY 0 0 0 0 0 selins ( 2) NRDY 0 0 0 0
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
clh | CLH 번호이다. |
svrname | 서버명이다. |
(svri) | 서버 ID이다. |
status | 서버의 현재 상태로 자세한 설명은 [시스템 동작 상태]를 참고한다. |
count | 처리 건수이다. |
qcount | 서버의 큐잉 건수이다. |
qpcount | 큐에서 삭제된 건수이다. |
emcount | 최대 큐잉 건수(maxqcount)를 초과하여 반환된 건수이다. |
현재 처리 중인 트랜잭션 정보를 조회한다.
사용 방법
$$1 tmax1 (tmadm): txquery(txq) [-x] [-g svgname] [-w [-r] [-G gwname]] [<upper-global-xid><lower-global-xid>]
옵션 | 설명 |
---|---|
[ -x ] | 트랜잭션 브랜치별 상세 정보를 조회한다. |
[ -g svgname ] | svgname의 그룹에 대한 트랜잭션 브랜치를 조회한다. |
[ -w ] | 도메인 서브 트랜잭션 트리에 대해 조회한다. |
[ -r ] | 리모트 도메인의 XID로 검색한다. |
[ -G gwname] | gwname의 도메인 게이트웨이에 대해 조회한다. |
upper-global-xid | 검사하고자 하는 xid의 gtid 의 앞의 4Byte이다. |
lower-global-xid | 검사하고자 하는 xid의 gtid 의 뒤의 4Byte이다. |
예제
트랜잭션 조회
다음은 트랜잭션 조회를 하는 예제이다.
$$14 tmax1 (tmadm): txq CLH0: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cli_id txstime txqcount txrcount XID txstate xastate - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - c0023 8:33:34 1 0 000:000:00022 TXBEGIN TX_OK c0024 18:33:34 1 0 000:000:00023 TXBEGIN TX_OK c0025 18:33:34 1 0 000:000:00024 TXBEGIN TX_OK c0026 18:33:34 1 0 000:000:00025 TXBEGIN TX_OK c0027 18:33:34 1 0 000:000:00026 TXBEGIN TX_OK c0028 18:33:34 1 0 000:000:00027 TXBEGIN TX_OK c0029 18:33:34 1 0 000:000:00028 TXBEGIN TX_OK c0030 18:33:34 1 0 000:000:00029 TXBEGIN TX_OK c0031 18:33:34 1 0 000:000:00030 TXBEGIN TX_OK
다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.
항목 | 설명 |
---|---|
cli_id | 현재 접속되어 처리 중인 클라이언트 식별 번호이다. |
txstime | 트랜잭션 처리 시작시간이다. |
txqcount | 현재 트랜잭션 큐에 쌓여 있는 트랜잭션 큐잉 건수이다. |
txrcount | 트랜잭션 처리 건수이다. |
XID | 트랜잭션 식별 번호이다. |
txstate | 트랜잭션의 처리 상태이다. (TXBEGIN, TXCOMMIT, TXROLLBACK) |
xastate | XA 처리 상태이다. |
다음은 트랜잭션 정보를 조회하는 예제이다.
$$6 tmaxh4 (tmadm): txquery -x CLH 0: ---------------------------------------------------------------- cli_id clid txstime txqcount txrcount XID txstate xastate bqualno nodename svgname txbstate xabstate ---------------------------------------------------------------- c1526 0x000005f6 15:13:35 4 0 34800000:0008c087 TXBEGIN TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK (B)00000001 tmaxh4 gw2301X BEGIN XA_OK (B)00000002 tmaxh4 gw2302X BEGIN XA_OK (B)00000003 tmaxh4 svg12302X BEGIN XA_OK c1527 0x000005f7 15:13:35 4 0 34800000:0008c089 TXBEGIN TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK (B)00000001 tmaxh4 gw2301X BEGIN XA_OK (B)00000002 tmaxh4 gw2302X BEGIN XA_OK (B)00000003 tmaxh4 svg12302X BEGIN XA_OK
다음은 그룹의 트랜잭션을 조회하는 예제이다.
$$7 tmaxh4 (tmadm): txq -g svg12301X CLH 1: ---------------------------------------------------------------- cli_id clid txstime txqcount txrcount XID txstate xastate bqualno nodename svgname txbstate xabstate ---------------------------------------------------------------- c1595 0x0000463b 15:14:10 1 0 34800001:0008e953 TXBEGIN TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK c1596 0x0000463c 15:14:10 1 0 34800001:0008e956 TXBEGIN TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK c1597 0x0000463d 15:14:10 1 0 34800001:0008e957 TXBEGIN TX_OK (B)00000000 tmaxh4 svg12301X BEGIN XA_OK
다음은 트랜잭션 트리를 조회하는 예제이다.
$$9 tmaxh4 (tmadm): txquery -w CLH 0: ---------------------------------------------------------------- gw_no txstime txqcount txrcount XID RXID txstate xastate ---------------------------------------------------------------- g0004 17:00:00 2 0 34800000:0008c38e 39800000:0003bcf7 PHASE2 TX_OK g0004 17:00:00 2 0 34800000:0008c38f 39800000:0003bcf8 PHASE1 TX_OK g0004 17:00:00 2 0 34800000:0008c391 39800000:0003bcf9 PHASE2 TX_OK g0004 17:00:00 2 0 34800000:0008c39a 39800000:0003bd00 PHASE1 TX_OK g0004 17:00:00 2 0 34800000:0008c3a1 39800000:0003bd08 PHASE1 TX_OK g0004 17:00:00 1 0 34800000:0008c3a3 39800000:0003bd09 sTXBEGIN TX_OK g0005 17:00:00 2 0 34800000:0008c38b 3e800100:000177f6 PHASE2 TX_OK g0005 17:00:00 2 0 34800000:0008c38d 3e800101:00014ff7 PENDING TX_OK g0005 17:00:00 2 0 34800000:0008c390 3e800101:00014ff8 PENDING TX_OK g0005 17:00:00 2 0 34800000:0008c392 3e800000:0006e050 PHASE1 TX_OK g0005 17:00:00 2 0 34800000:0008c396 3e800000:0006e052 PHASE1 TX_OK g0005 17:00:00 2 0 34800000:0008c397 3e800100:000177f8 PHASE1 TX_OK g0005 17:00:00 2 0 34800000:0008c398 3e800000:0006e055 PHASE1 TX_OK g0005 17:00:00 2 0 34800000:0008c399 3e800101:00014ff9 sTXBEGIN TX_OK g0005 17:00:00 2 0 34800000:0008c39c 3e800100:000177f9 PENDING TX_OK g0005 17:00:00 2 0 34800000:0008c39d 3e800000:0006e05a sTXBEGIN TX_OK g0005 17:00:00 2 0 34800000:0008c39e 3e800101:00014ffa PHASE1 TX_OK g0005 17:00:00 1 0 34800000:0008c39f 3e800000:0006e05b sTXBEGIN TX_OK g0005 17:00:00 1 0 34800000:0008c3a2 3e800100:000177fa sTXBEGIN TX_OK g0004 17:00:00 2 0 34800000:0008eb51 39800001:0003e50d PHASE2 TX_OK g0004 17:00:00 2 0 34800000:0008eb53 39800001:0003e510 PHASE2 TX_OK g0004 17:00:00 2 0 34800000:0008eb58 39800001:0003e516 PHASE1 TX_OK g0004 17:00:00 2 0 34800000:0008eb5b 39800001:0003e519 sTXBEGIN TX_OK g0005 17:00:00 2 0 34800000:0008eb4d 3e800001:0007084f PHASE2 TX_OK g0005 17:00:00 2 0 34800000:0008eb50 3e800001:00070852 PHASE2 TX_OK g0005 17:00:00 2 0 34800000:0008eb52 3e800001:00070854 PHASE2 TX_OK g0005 17:00:00 1 0 34800000:0008eb56 3e800001:00070858 sTXBEGIN TX_OK g0005 17:00:00 1 0 34800000:0008eb5a 3e800101:00014ffb sTXBEGIN TX_OK g0005 17:00:00 1 0 34800000:0008eb5c 3e800001:0007085b sTXBEGIN TX_OK
### txquery -w -r ### $$11 tmaxh4 (tmadm): txquery -w -r CLH 1: ---------------------------------------------------------------- gw_no txstime txqcount txrcount XID RXID txstate xastate ---------------------------------------------------------------- g0004 17:00:00 2 0 34800001:0008ed0a 39800001:0003e6bc PENDING TX_OK g0004 17:00:00 2 0 34800001:0008ed0b 39800001:0003e6bd PENDING TX_OK g0004 17:00:00 2 0 34800001:0008ed0c 39800001:0003e6be PHASE1 TX_OK g0004 17:00:00 2 0 34800001:0008ed0f 39800001:0003e6c1 PHASE1 TX_OK g0005 17:00:00 2 0 34800001:0008ed00 3e800001:000709aa PHASE2 TX_OK g0005 17:00:00 2 0 34800001:0008ed03 3e800101:00015046 PHASE2 TX_OK g0005 17:00:00 2 0 34800001:0008ed04 3e800100:00017846 PHASE2 TX_OK g0005 17:00:00 2 0 34800001:0008ed05 3e800001:000709b1 PENDING TX_OK g0005 17:00:00 2 0 34800001:0008ed06 3e800100:00017847 PENDING TX_OK g0005 17:00:00 2 0 34800001:0008ed07 3e800001:000709b2 sTXBEGIN TX_OK g0005 17:00:00 2 0 34800001:0008ed08 3e800100:00017848 PENDING TX_OK g0005 17:00:00 2 0 34800001:0008ed09 3e800100:00017849 PHASE2 TX_OK g0004 17:00:00 2 0 34800001:0008c53f 39800000:0003bea9 PHASE2 TX_OK g0004 17:00:00 2 0 34800001:0008c540 39800000:0003beab PHASE2 TX_OK g0004 17:00:00 2 0 34800001:0008c545 39800000:0003beaf PHASE1 TX_OK g0004 17:00:00 2 0 34800001:0008c546 39800000:0003beb0 PHASE1 TX_OK g0004 17:00:00 2 0 34800001:0008c548 39800000:0003beb2 sTXBEGIN TX_OK g0005 17:00:00 2 0 34800001:0008c51c 3e800000:0006e192 PHASE2 TX_OK g0005 17:00:00 2 0 34800001:0008c536 3e800000:0006e1a5 PHASE2 TX_OK g0005 17:00:00 2 0 34800001:0008c537 3e800100:00017845 PHASE2 TX_OK g0005 17:00:00 2 0 34800001:0008c539 3e800000:0006e1a7 PHASE2 TX_OK g0005 17:00:00 2 0 34800001:0008c53e 3e800000:0006e1ad PENDING TX_OK g0005 17:00:00 2 0 34800001:0008c541 3e800101:00015047 PENDING TX_OK g0005 17:00:00 2 0 34800001:0008c542 3e800000:0006e1af PENDING TX_OK g0005 17:00:00 2 0 34800001:0008c543 3e800101:00015048 PENDING TX_OK g0005 17:00:00 2 0 34800001:0008c544 3e800101:00015049 PHASE1 TX_OK
현재 사용 가능한 RQ의 상태를 보여주거나 디스크 큐에 쌓여있는 서비스를 사용자가 처리할 수 있다.
사용 방법
$$1 tmax1 (tmadm): rqstat (rqs) [-l] [-s rqname] [-f rqname] [-c rqname]
옵션 | 설명 |
---|---|
[-l] | 사용 가능한 RQ를 보여준다. |
[-s rqname] | 해당 RQ의 상태를 보여준다. |
[-f rqname] | RQ에 쌓여 있는 서비스를 처리한다. |
[-c rqname] | 정체된 RQ를 제거한다. |
[-f] 옵션과 [-c] 옵션을 사용하여 RQ를 처리하기 위해서는 tmadmin -m 옵션을 사용하여 마스터 모드로 동작하도록 해야 한다.
예제
다음은 RQ의 상태를 조회하는 예제이다.
$$1 tmax1 (tmadm): rqs -s rq1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Number of queue entries - - - - - - - - - - - - - - - - - - - - - - - - - - - - - request 0 reply 0 fail 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Accumulated queue activities - - - - - - - - - - - - - - - - - - - - - - - - - - - - - request enqueued 0 request dequeued 0 reply enqueued 10 reply dequeued 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
응용 서버 프로그램 에러 등으로 더 이상의 업무 처리가 불가능한 경우 이를 해결하기 위해 동작 중인 서버 프로세스를 중지시키는 경우 사용하는 기능이다. 명령어가 실행되면 중지된 서버 프로세스가 현재 처리 중인 서비스를 정상 완료한 후 동작을 중지하고, 큐에 있는 서비스는 대기 상태가 된다. 계속적으로 요청되는 서비스는 모두 큐에 쌓인다. suspend 명령어의 약어는 sp이다.
사용 방법
$$1 tmax1 (tmadm): suspend {-s svc_name [-p pid] | -v svr_name [-k num] [-a]}
옵션 | 설명 |
---|---|
-s svc_name | 서비스명이다. |
[-p pid] | 서비스를 서버 프로세스별로 suspend하는 옵션으로 [-s] 옵션과 함께 사용된다. |
-v svr_name | 서버 프로세스의 스케줄링을 막는 옵션이다. 요청된 서비스는 큐에 대기하며, resume 될 때까지 대기하거나 MAXQCOUNT, CLHQTIMEOUT 설정에 의해 큐에서 제거될 수 있다. |
[-k num] | 대상 서버 중 일부 프로세스들을 suspend 하는 옵션이다. [-v] 옵션과 함께 사용된다. 옵션으로 지정한 개수만큼 suspend시키며, 이미 일부 서버 프로세스가 suspend 된 경우에는 옵션 설정값만큼 추가로 suspend된다. 옵션 설정값은 해당 서버의 MAX를 초과할 수 없다. 서버 프로세스별로 suspend 상태를 확인하려면 [stat -p -X] 명령을 실행한다. suspend(sp) -v svr_name [-k 5] [-k] 옵션을 사용하여 서버 프로세스가 MAX개 모두 suspend되면 서버의 상태는 BLK로 바뀌게 된다. [-k] 옵션 없이 sp -v svr_name을 실행한 것과 동일하다. |
[-a] | suspend를 요청했을 때 대상이 되는 서버가 서비스를 실행 중인 경우에는 서비스가 종료될 때까지 대기하게 된다. 이 옵션을 사용하면 대상 서버가 서비스를 실행중이더라도 대기하지 않고 즉시 Suspend 상태로 변경한다. [-v] 옵션과 함께 사용된다. |
동작이 중지된 서버 프로세스의 활동을 재개한다. 활동이 재개된 서버 프로세스는 큐에 대기 중이던 서비스를 처리하기 시작하며 요청되는 서비스에 대해 처리 가능한 상태가 된다. resume 명령어의 약어는 rs이다.
사용 방법
$$1 tmax1 (tmadm): resume {-s svc_name [-p pid] | -v svr_name [-k num]}
옵션 | 설명 |
---|---|
-s svc_name | 서비스의 스케줄링을 재개하는 옵션이다. |
[-p pid] | 서비스를 서버 프로세스별로 재개한다. 서비스를 서버 프로세스별로 suspend / resume하고자 할 때 suspend를 수행할 경우 관련 서비스가 수행 중이면 수행이 완료된 후에 suspend가 진행되므로 시간이 오래 걸릴 수 있다. 이 경우 tmadmin을 강제 종료시키면 해당 서비스가 재개된다. suspend 이후 해당 서비스에 대한 요청은 큐에 쌓이게 된다. [-s] 옵션과 함께 사용된다. resume(rs) -s svc_name [-p pid] |
-v svr_name | 서버 프로세스의 스케줄링을 재개하는 옵션이다. |
[-k num] | 대상 서버 중 일부 프로세스들을 resume하는 옵션이다. [-v] 옵션과 함께 사용된다. 옵션으로 지정한 개수만큼 suspend된 서버 프로세스를 resume시키며, 이미 모든 서버 프로세스가 suspend 상태가 아니라면 명령은 취소된다. 옵션 설정값은 해당 서버의 MAX를 초과할 수 없다. 서버 프로세스별로 suspend 상태를 확인하려면 stat -p -X 명령을 실행한다. resume(rs) -v svr_name [-k 5] -k 옵션을 사용하여 서버 프로세스가 하나라도 resume 되면 서버의 상태는 RDY로 바뀌게 된다. 만약 기동되어 있는 프로세스가 없다면 NRDY 상태가 된다. |
다음은 resume과 관련된 설명이다.
suspend 상태의 서버를 resume 처리하는 방식 변경
Tmax 버전에 따라 동작 방식이 다르므로 주의해야 한다.
Tmax 4.0 Sp3 Fix10, Tmax 4.0 Sp8 Fix1, Tmax5.0 Sp1 Fix1 이후
tmadmin에서 서버 프로세스를 suspend한 경우에 해당 프로세스를 tmdown 후 tmboot 하더라도 Suspend 상태가 그대로 유지된다. 또한 서버 프로세스가 Suspend 상태에 있어도 tmboot 로 프로세스를 기동시킬 수 있다. 따라서 suspend 된 서버를 tmboot 로 기동시킨 다음에는 반드시 resume을 해주어야 서비스가 가능하다.
Tmax 4.0 이후
tmadmin에서 서버 프로세스를 suspend한 경우에 해당 프로세스를 tmdown 후 tmboot하면 해당 프로스세의 status가 자동으로 재개된다. 서버 프로세스가 suspend된 상태에서는 해당 프로세스를 tmboot할 수 없도록 제한한다.
$ tmboot -s svr02011 TMBOOT for node(tmaxh4) is starting: Welcome to Tmax demo system: it will expire 2006/1/25 Today: 2005/12/19 (E) BOOT3020 svr02011 is suspended, resume(or tmdown) it first. [BOOT0038]
한 노드의 COUSIN 그룹에 속한 서버에 대한 suspend / resume
한 노드에 2개 이상의 서버 그룹이 COUSIN으로 설정된 경우 COUSIN 서버 그룹에 속한 모든 서버에 대하여 suspend / resume이 적용된다.
ASQCOUNT은 SVRGROUP 절에서 설정을 하며, 서버 프로세스를 BLK으로 설정하기 위해선 [-v] 옵션을 사용해야 한다.
tmadmin의 advertise/unadvertise 명령어를 통하여 특정 서비스명을 등록 및 등록해제할 수 있다.
특정 서비스를 등록(advertise)할 경우, CLH가 관리하는 서버별 서비스의 이름 테이블에 해당 서비스의 이름을 등록할 수 있으며 unadvertise할 경우 서버별 서비스의 이름 테이블에서 삭제된다.
등록(advertise)은 서버 프로세스의 서버가 제공하는 새로운 서비스를 등록할 수 있도록 하며 등록해제(unadvertise)는 그 서버가 제공하는 서비스를 등록해제할 수 있도록 한다. 등록해제된 서비스를 호출하고자 할 경우 TPENOENT 에러를 수신한다. 특정 서비스가 하나의 서버 프로세스에서 등록해제(unadvertise)가 되었다 하더라도, 다른 서버 프로세스에서 제공되고 있으면 여전히 서비스 루틴을 수행할 수 있게 된다.
사용 방법
등록(advertise)
$$1 tmax1 (tmadm): advertise {-s svc_name [-p pid]}
옵션 | 설명 |
---|---|
-s svc_name | 서비스명을 등록한다. |
[-p pid] | 서버 프로세스 PID를 등록한다. |
등록해제(unadvertise)
$$1 tmax1 (tmadm): unadvertise {-s svc_name [-p pid]}
옵션 | 설명 |
---|---|
-s svc_name | 서비스명을 등록 해제한다. |
[-p pid] | 서버 프로세스 PID를 등록 해제한다. |
예제
다음은 상태 정보를 확인한 서비스 중 이름이 TOUPPER이고 서버 프로세스 ID가 15287인 서비스를 unadvertise를 통해 등록 해제하는 예제이다. 서비스를 등록/해제(advertise / unadvertise)하기 전에 st 명령어를 사용해서 서비스 상태 정보를 확인한다.
$$1 tmax1 (tmadm): st -p -x CLH 0: ---------------------------------------------------------------- svr_name svgname spr_no status count avg svc PID fail_cnt err_cnt min_time max_time utime umin_time umax_time stime smin_time smax_time ---------------------------------------------------------------- svr2 svg1 36 RDY 0 0.000 -1 15285 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 svr2 svg1 37 RDY 0 0.000 -1 15286 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 svr2 svg1 38 RDY 0 0.000 -1 15287 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ---------------------------------------------------------------- TOTAL COUNT = 0 TOTAL SVCFAIL COUNT = 0 TOTAL ERROR COUNT = 0 TOTAL RUNNING COUNT = 0 $$1 tmax1 (tmadm): unadvertise -s TOUPPER –p 15287 TOUPPER is unadvertise $$8 tmaxh4 (tmadm): st -s CLH 0: ---------------------------------------------------------------- svc_name svr_name count cq_cnt aq_cnt q_avg avg status ---------------------------------------------------------------- TOUPPER svr2 0 0 0 0.000 0.000 PUNADV
다음 등록 해제한 서비스를 advertise를 통해 등록하는 예제이다. 서비스를 등록/해제(advertise / unadvertise)하기 전에 st 명령어를 사용해서 서비스 상태 정보를 확인한다.
$$1 tmax1 (tmadm): st -p -x CLH 0: ---------------------------------------------------------------- svr_name svgname spr_no status count avg svc PID fail_cnt err_cnt min_time max_time utime umin_time umax_time stime smin_time smax_time ---------------------------------------------------------------- svr2 svg1 36 RDY 0 0.000 -1 15285 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 svr2 svg1 37 RDY 0 0.000 -1 15286 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 svr2 svg1 38 RDY 0 0.000 -1 15287 0 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ---------------------------------------------------------------- TOTAL COUNT = 0 TOTAL SVCFAIL COUNT = 0 TOTAL ERROR COUNT = 0 TOTAL RUNNING COUNT = 0 $$1 tmax1 (tmadm): advertise -s TOUPPER –p 15287 TOUPPER is advertise $$11 tmaxh4 (tmadm): st -s CLH 0: ---------------------------------------------------------------- svc_name svr_name count cq_cnt aq_cnt q_avg avg status ---------------------------------------------------------------- TOUPPER svr2 0 0 0 0.000 0.000 RDY
특정 서버 프로세스 혹은 모든 서버 프로세스의 통계 정보를 초기화하는 명령어로 마스터 모드로 사용할 때만 가능하다.
사용 방법
$$1 tmax1 (tmadm): restat [-v [server_process_name]] [-a]
옵션 | 설명 |
---|---|
[-v [server_process_name]] | 지정된 서버 프로세스의 통계 정보를 초기화한다. |
[-a] | 모든 서버 프로세스의 통계 정보를 초기화한다. |
rbs(Reboot Server Process)는 현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경한다. TMAX_BKAPPDIR를 '.profile'의 환경변수에 지정하고 새로운 프로그램의 실행 파일로 지정한다.
예를 들어 $TMAXDIR/bk_appbin에 옮기고 다음의 명령어를 수행한다.
사용 방법
$$1 tmax1 (tmadm): rbs new_file old_file
항목 | 설명 |
---|---|
new_file | 새 파일명을 지정한다. |
old_file | 사용 중인 파일명을 지정한다. |
다음은 rebootsvr(rbs) 수행 과정이다.
.profile에 아래와 같이 환경변수를 추가한다.
export TMAX_BKAPPDIR=/data2/starbj81/tmax64/bk_appbin
환경변수에 설정해준 것과 동일한 위치에 bk_appbin 디렉터리를 생성한다.
$mkdir bk_appbin
appbin 디렉터리에 있는 실행 파일을 bk_appbin 디렉터리로 복사한다.
$cp appbin/svr2 bk_appbin/
tmadmin -m을 실행한 후 rbs를 실행한다.
현재 3개의 svr2 서버 프로세스가 기동된 경우
$$1 tmax1 (tmadm): rbs svr2 svr2 TMBOOT for node(tmaxh2) is starting: TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting: Fri Dec 19 11:21:06 2003 TMBOOT for node(tmaxh2) is starting: TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting: Fri Dec 19 11:21:06 2003 TMBOOT for node(tmaxh2) is starting: TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting: Fri Dec 19 11:21:06 2003 >> 3 servers booted using tmp execfile _rbs01_svr2 >> reboot svr /data2/starbj81/tmax64/appbin/svr2 finished
현재 1개의 svr2 서버 프로세스가 기동된 경우
$$1 tmax1 (tmadm): rbs svr2 svr2 >> suspend ok >> down ok >> cp ok >> boot ok >> resume ok >> reboot svr /data2/starbj81/tmax64/appbin/svr2 finished
ps를 이용하여 서버 프로세스가 정상적으로 기동되었는지 확인한다.
현재 3개의 svr2 서버 프로세스가 기동된 경우
$ps –ef | grep svr2 starbj81 21710 1 0 11:46:32 pts/ts 0:00 _rbs00_svr2 -b -21709 -S svr2 -s svr2 -d -1 -v 21689 starbj81 21713 1 0 11:46:32 pts/ts 0:00 _rbs00_svr2 -b -21712 -S svr2 -s svr2 -d -1 -v 21689 starbj81 21716 1 0 11:46:32 pts/ts 0:00 _rbs00_svr2 -b -21715 -S svr2 -s svr2 -d -1 -v 21689
현재 1개의 svr2 서버 프로세스가 기동된 경우
$ps –ef | grep svr2 starbj81 21607 1 0 11:43:46 pts/ts 0:00 svr2 -s svr2 -g 2
해당 이름의 서버 프로세스가 2개 이상일 경우, 해당 프로세스를 모두 종료시키고 새로운 프로세스를 기동시켜 처리를 하게 되면 업무의 공백상태가 발생하게 된다. 따라서 이 경우 서버 프로세스를 하나씩 종료시키면서 기동된다. 예를 들어 svr1 서버의 MIN=2인 상황에서 rbs를 실행시켰을 경우 다음과 같은 순서로 rbs가 수행된다.
svr1 1을 종료한다.
bk_appbin 디렉터리에 임시파일(_rbs00_svr1)을 복사한다.
_rbs00_svr1이 기동한다.
svr1 2를 종료한다 .
bk_appbin 디렉터리에 임시파일(_rbs00_svr1)을 복사한다.
_rbs00_svr1이 기동한다.
동시성 보장은 서로 다른 버전의 프로세스가 동시에 서비스를 수행하지 않도록 제한하는 것을 의미한다. rbs 수행할 경우 동시성 보장 및 변경되지 않은 서비스에 대한 무중단 서버 프로세스 교체가 가능하다.
사용 방법
$$1 tmax1 (tmadm): rbs [-S | -s svc_name,...] newfile svr_name [svg_name]
항목 | 설명 |
---|---|
[-S] | 해당 서버의 전체 서비스를 suspend한다. |
[-s svc_name,...] | 해당 서버의 하나의 서비스를 suspend한다. |
newfile | 새 파일명을 지정한다. |
svr_name | suspend 대상의 서버명이다. |
[svg_name] | suspend 대상의 서버가 속한 서버 그룹이다. |
예제
다음은 해당 서버의 특정 서비스만 변경하는 경우로 svr2 서버의 TOUPPER 서비스만 일시적으로 suspend되며 다른 서비스는 계속 서비스 수행이 가능하다.
$$1 tmax1 (tmadm): rbs -s TOUPPER svr2_new svr2
다음은 해당 서버의 특정 서비스 2개를 변경하는 경우로 svr2 서버의 TOUPPER 및 TOLOWER 서비스만 일시적으로 suspend되며 다른 서비스는 계속 서비스 수행이 가능하다. svc_name을 여러 개를 지정하는 경우 콤마(,)로 구분하며 공백이 포함되지 않아야 한다.
$$1 tmax1 (tmadm): rbs -s TOUPPER,TOLOWER svr2_new svr2
다음은 해당 서버의 전체 서비스를 변경하는 경우로 svr2 서버의 모든 서비스가 일시적으로 중단될 수 있다.
$$1 tmax1 (tmadm): rbs -S svr2_new svr2
다음은 해당 서버 그룹에 속한 해당 서버의 전체 서비스를 변경하는 경우로 svg1에 속한 svr2 서버의 모든 서비스가 일시적으로 중단될 수 있다.
$$1 tmax1 (tmadm): rbs -S svr2_new svr2 svg1
1. rbs에 옵션(-s 또는 -S 옵션)을 미지정할 경우, 동시성을 보장할 수 없다.
2. 한 노드에 COUSIN 그룹으로 설정된 환경에서는 rbs에서 svgname별 rbs가 제한된다.
멀티 노드 동시성 보장은 멀티 노드에서 서로 다른 버전의 프로세스가 동시에 서비스를 수행하지 않도록 제한하는 것을 의미한다. 부하 분산이 설정된 멀티 노드에서 rbs를 수행할 때 동시성 보장 및 변경되지 않은 서비스에 대한 무중단 서버 프로세스 교체가 가능하다.
사용 방법
$$1 tmax1 (tmadm): mrbs [-S | -s svc_name,...] newfile svr_name
항목 | 설명 |
---|---|
[-S] | 해당 서버의 전체 서비스를 suspend한다. |
[-s svc_name] | 해당 서버의 하나의 서비스를 suspend한다. |
newfile | 새 파일명을 지정한다. |
svr_name | suspend 대상의 서버명이다. |
예제
다음은 해당 서버의 특정 서비스만 변경하는 경우로 svr2 서버의 TOUPPER 서비스만 일시적으로 suspend되며 다른 서비스는 계속 서비스 수행이 가능하다.
$$1 tmax1 (tmadm): mrbs -s TOUPPER svr2_new svr2
다음은 해당 서버의 특정 서비스 2개를 변경하는 경우로 svr2 서버의 TOUPPER 및 TOLOWER 서비스만 일시적으로 suspend되며 다른 서비스는 계속 서비스 수행이 가능하다. svc_name을 여러 개 지정하는 경우 콤마(,)로 구분하며 공백이 포함되지 않아야 한다.
$$1 tmax1 (tmadm): mrbs -s TOUPPER,TOLOWER svr2_new svr2
다음은 해당 서버의 전체 서비스를 변경하는 경우로 svr2 서버의 모든 서비스가 일시적으로 중단될 수 있다.
$$1 tmax1 (tmadm): mrbs -S svr2_new svr2
한 노드에 2개 이상의 서버 그룹이 COUSIN으로 설정된 경우 COUSIN 서버 그룹에 속한 모든 서버에 대하여 rbs(서버 교체)가 가능하다.
cfgadd(ca)는 Tmax 운영 도중, 특정 서버 프로그램에 서비스가 추가될 때에 해당 서버만 다운시킨 후 이 명령을 사용하여 동적으로 서비스를 추가할 수 있다. 서비스 외에도 서버, 서버 그룹, 노드를 운영 중에 동적으로 추가할 수 있다. Tmax 5.0부터는 CFL의 –a 옵션을 사용하지 않고 생성한 이진 환경 파일을 동적 추가할 수 없으므로 반드시 -a 옵션을 이용해서 환경 파일을 컴파일해야 한다.
cfgadd(ca)를 사용하여 서비스를 동적으로 추가할 때 제약사항은 절 5.5.6. “cfgadd(ca) 사용하여 동적 추가할 때 제약사항”을 참고한다.
사용 방법
$$1 tmax1 (tmadm) : cfgadd (ca) - i cfgfile
항목 | 설명 |
---|---|
- i cfgfile | 추가할 서비스의 환경 파일명을 지정한다. |
다음은 서비스 동적 추가에 해당하는 cfgadd(ca) 수행 과정이다.
해당 추가할 환경 파일을 생성한다.
$vi new.m
새로 만든 환경 파일을 기존 환경 파일에 -a 로 추가하고, cfl로 –o 옵션을 사용하여 다른 이름의 바이너리 환경 파일을 생성한다.
$cfl -i org.m -a new.m -o tmchg
gst로 서비스 테이블을 생성한다.
$gst -f tmchg
"tmadmin –m"을 수행하고, cfgadd(ca)를 이용하여 서비스를 추가한다.
$cfgadd -i tmchg
해당 서버 프로그램을 컴파일한다.
$compile c svr1
해당 서버 프로세스를 기동한다.
$tmboot –S svr1
다음은 서버 동적 추가에 해당하는 cfgadd(ca) 수행 과정이다.
새로운 서버 추가 환경 파일 tmchg.m을 만든 후 추가 환경만 등록한다.
<tmchg.m>
*SERVER hello SVGNAME = svg1 *SERVICE HELLO SVRNAME = hello
환경 파일을 컴파일한다. tmconfig.m은 기존의 환경 파일, tmchg.m은 서버 추가 환경 파일을 의미한다.
cfl -i tmconfig.m -a tmchg.m -o tmchg
서비스 테이블을 생성한다.
gst -f tmchg
cfgadd -i로 환경 파일을 추가한다.
tmaxi1@dhjang ./config > tmadmin -m
$$3 tmaxi1 (tmadm): si
-------------------------------------------------------------
clh svrname (svri) status count qcount qpcount emcount
-------------------------------------------------------------
0 tmaxgw ( 0) RDY 0 0 0 0
0 toupper ( 18) RDY 0 0 0 0
$$4 tmaxi1 (tmadm): cfgadd -i tmchg
config is successfully added
$$5 tmaxi1 (tmadm): si
-------------------------------------------------------------
clh svrname (svri) status count qcount qpcount emcount
-------------------------------------------------------------
0 tmaxgw ( 0) RDY 0 0 0 0
0 toupper ( 18) RDY 0 0 0 0
0 hello ( 19) NRDY 0 0 0 0
아직 hello 서버는 NRDY 상태이다.
tmboot -S hello -f tmchg를 입력한다.
tmaxi1@dhjang ./config > tmboot -S hello -f tmchg TMBOOT for node(tmaxi1) is starting: Welcome to Tmax demo system: it will expire 2002/8/31 Today: 2002/8/19 TMBOOT: SVR(hello) is starting: Mon Aug 19 15:37:44 2002
tmadmin에서 hello 서버가 RDY 상태인지 확인한다.
$$6 tmaxi1 (tmadm): si ------------------------------------------------------------- clh svrname (svri) status count qcount qpcount emcount ------------------------------------------------------------- 0 tmaxgw ( 0) RDY 0 0 0 0 0 toupper ( 18) RDY 0 0 0 0 0 hello ( 19) RDY 0 0 0 0
서버 그룹을 동적으로 추가하는 방법은 새로운 추가 환경 파일만 조금 다르고 나머지는 동일하다. 새로 등록되는 서버 그룹과 서버와 서비스를 추가 환경 파일로 만든다. 그외의 과정은 서버를 동적으로 추가하는 방법과 동일하다.
<tmchg.m>
*SVRGROUP svg2 NODENAME = "aix5l" *SERVER svr3 SVGNAME = svg2, MIN = 1, MAX = 10 *SERVICE FDLTOUPPER SVRNAME = svr3 FDLTOLOWER SVRNAME = svr3
cfgadd를 이용하여 노드를 동적으로 추가할 수 있다. 또한 COUSIN 서버 그룹이 속한 노드도 동적으로 추가할 수 있다.
다음은 노드 동적 추가에 해당하는 cfgadd(ca) 수행 과정이다.
환경 파일을 작성한다.
<tmconfig.m>
*DOMAIN tmax1 SHMKEY = @SHMEMKY@, MINCLH = 1, MAXCLH = 3, TPORTNO = @TPORTNO@, BLOCKTIME = 300, MAXCPC = 100, RACPORT = @TRACPORT@ *NODE @HOSTNAME@ TMAXDIR = "@TMAXDIR@", APPDIR = "@TMAXDIR@/appbin", @RMTNAME@ TMAXDIR = "@RMTDIR@", APPDIR = "@RMTDIR@/appbin", *SVRGROUP svg1 NODENAME = "@HOSTNAME@",COUSIN = "svg2",LOAD = 2 svg2 NODENAME = "@RMTNAME@",LOAD = 1 *SERVER svr2 SVGNAME = svg1 *SERVICE TOUPPER SVRNAME = svr2 TOLOWER SVRNAME = svr2
<tmconfig_add.m>
*NODE @RMTNAME2@ TMAXDIR = "@RMTDIR2@", APPDIR = "@RMTDIR2@/appbin", *SVRGROUP svg1 NODENAME = "@HOSTNAME@",COUSIN = "svg2,svg3",LOAD = 2 svg3 NODENAME = "@RMTNAME2@",LOAD = 1
추가된 새로운 노드에 racd를 기동한다.
Node3>$ racd -k
환경 파일을 컴파일한다. 새로운 노드가 추가된 환경 파일 tmconfig_add.m을 컴파일한다. 컴파일할 때 –o 옵션을 사용하여 다른 이름의 이진 환경 파일을 생성한다.
node1>$cfl -i tmconfig.m -a tmconfig_add.m –o tmchg CFL is done successfully for node(node1) CFL: rcfl start for rnode (node2) CFL is done successfully for node(node2) CFL: rcfl start for rnode (node3) CFL is done successfully for node(node3)
서버를 컴파일한다. 새로 추가할 노드의 서버를 컴파일한다.
node3>$ gst -f tmchg node3>$ compile c svr2
동적 노드를 추가한다. tmadmin의 cfgadd 명령어를 통하여 동적으로 노드를 추가한다. 각각의 노드에서 tmadmin –l 로 모두 해당 명령어를 실행해야 한다는 점에 주의한다.
다음은 node1, node2가 존재하는 상황에서 node3를 추가할 경우에 대한 예제이다.
# node1 $ node1>tmadmin –l -m --- Welcome to Tmax Admin (Type "quit" to leave) --- $$2 node1 (tmadm): cfgadd -i tmchg (I) TMM0211 General Infomation : CFGADD started [TMM0902] (I) TMM0211 General Infomation : CFGADD completed [TMM0907] config is successfully added # node2 $ node2>tmadmin –l -m --- Welcome to Tmax Admin (Type "quit" to leave) --- $$2 node2 (tmadm): cfgadd -i tmchg (I) TMM0211 General Infomation : CFGADD started [TMM0902] (I) TMM0211 General Infomation : CFGADD completed [TMM0907] config is successfully added
새로 추가된 노드(node3)를 기동한다.
Node3>tmboot -n tmaxh4 -f tmchg TMBOOT for node(tmaxh4) is starting: Welcome to Tmax demo system: it will expire 2008/11/23 Today: 2008/9/24 TMBOOT: TMM is starting: Wed Sep 24 11:11:59 2008 TMBOOT: CLL is starting: Wed Sep 24 11:11:59 2008 (I) TMM0211 General Infomation : node register (nodeno = 0(0)) success [TMM0404] (I) TMM0211 General Infomation : node register (nodeno = 1(1)) success [TMM0404] TMBOOT: CLH is starting: Wed Sep 24 11:11:59 2008 (I) CLH9991 Current Tmax Configuration: Number of client handler(MINCLH) = 1 Supported maximum user per node = 7966 Supported maximum user per handler = 7966 [CLH0125] TMBOOT: TLM(tlm) is starting: Wed Sep 24 11:11:59 2008 TMBOOT: SVR(svr2) is starting: Wed Sep 24 11:11:59 2008
새로 추가된 노드를 확인한다. 노드가 정상적으로 추가되었는지 확인한다.
node1>tmadmin TMADMIN for rnode (node2): starting to connect to RAC TMADMIN for rnode (node3): starting to connect to RAC --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 node1 (tmadm): ti Tmax System Info: DEMO version 4.0 SP #3 Fix #8: expiration date = 2008/11/22 maxuser = UNLIMITED, domaincount = 1, nodecount = 3, svgrpcount = 3, svrcount = 9, svccount = 6 rout_groupcount = 0, rout_elemcount = 0 cousin_groupcount = 1, cousin_elemcount = 3 backup_groupcount = 0, backup_elemcount = 0 Tmax All Node Info: nodecount = 3: ---------------------------------------------------------------- no name portno racport shmkey shmsize minclh maxclh ---------------------------------------------------------------- 0 node1 8350 3155 88350 225760 1 3 1 node2 8350 3155 88350 225760 1 3 2 node3 8350 3155 88350 225760 1 3 $$2 (tmadm): st -s CLH 0: -------------------------------------------------------------- svc_name svr_name count cq_cnt aq_cnt q_avg avg status -------------------------------------------------------------- TOLOWER svr2 0 0 0 0.000 0.000 RDY TOUPPER svr2 0 0 0 0.000 0.000 RDY Msg from rnode(node2): CLH 0: -------------------------------------------------------------- svc_name svr_name count cq_cnt aq_cnt q_avg avg status -------------------------------------------------------------- TOLOWER svr2 0 0 0 0.000 0.000 RDY TOUPPER svr2 0 0 0 0.000 0.000 RDY Msg from rnode(node3): CLH 0: -------------------------------------------------------------- svc_name svr_name count cq_cnt aq_cnt q_avg avg status -------------------------------------------------------------- TOLOWER svr2 0 0 0 0.000 0.000 RDY TOUPPER svr2 0 0 0 0.000 0.000 RDY
cfgadd(ca)를 사용하여 서비스, 서버, 서버 그룹, 노드 등을 동적으로 추가할 때 아래와 같은 제약사항이 있다.
각 항목에 대해서 추가만 가능하며 제거는 할 수 없다. 제거를 위해서는 기존 환경 파일에서 항목을 제거하고 cfl을 실행한 다음에 Tmax를 재기동해야만 한다.
기존 환경설정 파일에 존재하는 이름의 항목이 새로 추가하는 환경설정 파일에 중복해서 존재하면 안된다.
새로 추가된 환경설정 파일의 내용을 기존 환경설정 파일에 적용하는 경우에는 반드시 각 절의 마지막에 추가되어야 한다. 추가된 항목을 기존 환경설정의 중간에 넣거나 순서를 변경하면 운영환경의 정보가 비정상적으로 변경될 수 있으므로 반드시 주의해야 한다.
새로운 항목을 추가할 때, cfl -i 옵션에 사용하는 기존 환경설정 파일은 항상 마지막에 새로 추가한 환경설정 파일의 내용이 기존 환경설정 파일에 적용되어 있어야 한다.
MAXNODE, MAXSVG, MAXSVR, MAXSPR, MAXSVC, MAXTMS, MAXCPC 설정 이내에서 항목을 추가할 수 있음을 유의한다.
서버 그룹을 추가할 때 XA 서버 그룹인 경우에는 TMS를 지정하고, 해당 프로그램이 생성되어 있는지 확인한다.
RQ는 동적 추가를 할 수 없다.
COUSIN / BACKUP이 있는 서버 그룹을 추가 및 제거 할 수 없다.
COUSIN / BACKUP이 있는 게이트웨이를 추가 및 제거 할 수 없다.
COUSIN / BACKUP이 있는 서버 그룹에 동적으로 추가된 서비스를 제거할 수 없다.
서비스, 서버, 서버 그룹, 노드를 추가할 때, CFL을 이용해 동적추가를 위한 이진 환경 파일을 생성해야 한다.
CFL의 –a 옵션을 사용하지 않고 만든 이진 환경 파일을 동적 추가하면 다음과 같은 에러 메시지가 출력된다.
(E) ADM2048 Engine type mismatch (0): 'a' option must be used [ADM0417]
현재 설정되어 있는 환경 파일의 설정값을 동적으로 변경할 수 있는 명령어이다.
변경 가능한 항목은 tmadmin에서 cfg 명령어를 통해서 확인할 수 있다. 각 항목 중에서 괄호로 약어가 표시된 항목이 동적으로 변경 가능한 항목이다.
사용 방법
$$1 tmax1 (tmadm): set [-d [domain]| -g [server_group]| -v [service] | -s [server]] 항목 값
항목 | 설명 |
---|---|
[-d [domain]] | DOMAIN 절을 변경하려는 경우 설정한다. 특정 도메인의 정보를 변경하는 경우 도메인명을 설정한다. |
[-g [server_group]] | GATEWAY 절을 변경하려는 경우 설정한다. 특정 서버 그룹의 정보를 변경하는 경우 서버 그룹명을 설정한다. |
[-v [service]] | SERVICE 절을 변경하려는 경우 설정한다. 특정 서비스의 정보를 변경하는 경우 서비스명을 설정한다. |
[-s [server]] | SERVER 절을 변경하려는 경우 설정한다. 특정 서버의 정보를 변경하는 경우 서버명을 설정한다. |
항목 | 변경할 항목을 설정한다. |
값 | 변경할 값을 설정한다. |
예제
다음은 명령어 사용 예제이다.
$$1 tmax1 (tmadm): set -d res1 bt 100 $$1 tmax1 (tmadm): set -g svg1 ld 5 $$1 tmax1 (tmadm): set -v kfdl1 mq 1000 $$1 tmax1 (tmadm): set -s SYNC pr 100 $$1 tmax1 (tmadm): set -n tmaxh4 cb n $$1 tmax1 (tmadm): set -s svc_name pr 99
TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 환경설정값을 동적으로 변경할 수 있는 명령어이다.
변경 가능한 항목은 tmadmin에서 cfgopt 명령어를 통해서 확인할 수 있다. cfgopt에서 출력되는 항목이 동적으로 변경 가능한 항목이다.
사용 방법
$$1 tmax1 (tmadm): setopt [-tmm] 항목 값
항목 | 설명 |
---|---|
[-tmm] | TMMOPT 환경설정에 정의된 옵션의 값을 변경하려는 경우에 설정한다. |
항목 | 변경할 항목을 설정한다. cfgopt에서 출력되는 항목의 옵션을 설정한다. (예: -F) |
값 | 변경할 값을 설정한다. |
예제
다음은 명령어 사용 예제이다.
$$1 tmax1 (tmadm): setopt -tmm -F 30 new value (30) is set for section = -tmm, name = N/A, fld = -F $$1 tmax1 (tmadm): setopt -tmm -t 15 new value (15) is set for section = -tmm, name = N/A, fld = -t
업무의 폭주 현상이 발생하여 많은 업무가 쌓여 정상적으로 거래를 처리하지 못하는 경우, 현재 큐에 누적되어 있는 서비스 요청을 삭제하는 기능이다. 하루에도 수십 만 건의 업무를 처리하는 은행이나 관공서에서 유용하게 사용될 수 있는 기능이다.
삭제된 업무는 클라이언트의 재요청을 통해 다시 처리될 수 있다. Tmax에서는 서버 프로세스별로 큐를 관리하여 관리자는 특정 서버별로 큐를 삭제할 수 있어 타 업무의 효과적인 수행에도 도움을 준다.
Queue Purge 명령어의 약어는 qp로 삭제된 서비스는 클라이언트에게 TPEQPURGE(tperrno = 27)를 반환한다. 따라서 클라이언트는 이에 맞게 적절한 대처를 할 수 있다. qp의 내역과 삭제된 클라이언트 ID는 slog에 함께 기록된다.
사용 방법
$$1 tmax1 (tmadm): qpurge {-v svr_name [-k number] | -s svc_name}
항목 | 설명 |
---|---|
-v svr_name | 큐에 쌓여있는 특정서버에 대한 요청을 삭제한다. |
[ -k number] | 서버의 Queue에 쌓인 요청 중 일부를 purge시킬 수 있는 기능이다. 반드시 –v 옵션과 함께 사용해야 한다. number 값이 0보다 큰 수 N 이면 처음 들어온 N개의 서비스 요청만 남기고 이후에 들어온 요청을 purge시킨다.
|
-s svc_name | 큐에 쌓여있는 특정 서비스에 대한 요청을 삭제한다. |
현재 접속되어 있으나 아무 일도 수행하지 않는 클라이언트를 강제로 연결을 해제한다. 클라이언트 정보를 얻을 수 있는 ci 명령어로 확인한 후 사용한다. discon 명령어의 약어는 ds이며, 다음과 같은 옵션들이 제공된다.
사용 방법
$$1 tmax1 (tmadm): ds [-h clhno] [-f] {-a | -n | -i idle_time | -c cli_id | -A}
옵션 | 설명 |
---|---|
[-h clhno] | 해당 CLH에 연결된 클라이언트 접속을 해제한다. |
[-f] | 클라이언트와의 접속을 즉시 해제하는 옵션이다. |
{-a} | 해당 CLH에 접속되어 있는 모든 클라이언트의 접속을 해제한다. [-h] 옵션이 적용되어 있지 않을 경우, 기본값으로 0번 CLH에 접속되어 있는 클라이언트의 연결이 해제된다. |
{-n} | 정확한 정보가 없는 클라이언트와의 연결을 해제한다. "tpalloc"로 할당된 버퍼는 사용하지 않는다. |
{-i idle time} | 지정된 시간(초 단위)을 초과한 세션의 클라이언트와의 접속을 해제한다. |
{-c cli_id} | 클라이언트에게 부여한 ID 번호로 접속을 해제한다. ID 번호는 반드시 설정해야 한다. |
{-A} | 모든 CLH에 접속되어 있는 클라이언트와의 접속을 해제한다. |
관리자는 tmadmin을 사용하여 여러 가지 실시간 정보를 조회할 수 있다. 주어진 상황에 맞는 즉각적이고 효과적인 조치를 취할 수 있다. tmadmin은 통계적 정보 분석을 위해 관리자 데이터를 로그로 남길 수 있다. 로깅 파일은 현재 디렉터리에 만들어진다. 로그 데이터를 통해 업무 폭주 시간, 불필요한 서버 프로세스, 큐잉 상태 등을 확인하여 전반적인 시스템 분석이 가능하다.
logstart 명령어를 통해서 로그 처리를 시작할 수 있으며 logend 명령어를 통해 종료한다.
사용 방법
로그 처리시작(logstart)
$$1 tmax1 (tmadm): logstart filename
항목 | 설명 |
---|---|
filename | 로그 파일명을 설정한다. |
로그 처리 종료(logend)
$$1 tmax1 (tmadm): logend
TMAX_TRACE는 Runtime tracing facility로 Tmax 애플리케이션의 실행에 대한 Runtime tracing이 이루어질 수 있도록 하는 기능이다. 이 기능은 환경변수 TMAX_TRACE를 설정하여 사용할 수 있으며, 시스템 운영 중에 동적으로 설정을 변경하고자 하는 경우에는 tmadmin의 chtrc 명령어를 사용할 수 있다.
사용 방법
chtrc [-g svgname |-v server| -i sprno]] -s newspec
옵션 | 설명 |
---|---|
[-g svgname] | 서버 그룹의 스펙을 변경하는 경우 설정한다. |
[-v server] | 서버의 스펙을 변경하는 경우 설정한다. |
[-i sprno] | 서버 프로세스의 스펙을 변경하는 경우 설정한다. |
-s newspec | 변경할 스펙을 지정한다. |
사용예제
다음은 특정 서버 그룹에 속하는 모든 서버의 스펙을 변경하는 예제이다.
$$1 tmaxs1 (tmadm): chtrc -g svgname -s newspec
다음은 특정 서버 그룹에 속한 서버들을의 스펙을 변경하는 예제이다.
$$1 tmaxs1 (tmadm): chtrc -g svgname -s newspec
다음은 특정 서버 그룹의 서버의 스펙을 변경하는 예제이다.
$$3 tmaxs1 (tmadm): chtrc -g svgname -v server -s newspec
특정 서버 프로세스의 스펙을 변경하는 예제이다.
$$4 tmaxs1 (tmadm): chtrc -g svgname -i sprno -s newspec
특정 에러 상황에 보다 신속하게 대응하기 위하여 tmadmin의 chlog 명령어를 이용하여 런타임 도중에 로그 레벨을 동적으로 변경할 수 있다. 로그 레벨 변경 기능을 사용하여 로그를 확인하기 위해서는 반드시 해당 모듈을 디버그 모드로 사용해야 한다. tmadmin의 cfg 명령어를 통하여 로그 레벨이 실제로 변경되었는지 확인할 수 있다.
사용 방법
$$1 tmaxs1 (tmadm) : chlog [-t | -c | -v [server_name] | -g [server_group_name]|-m] -l [loglvl]
옵션 | 설명 |
---|---|
[-t] | TMM의 로그 레벨을 설정한다. |
[-c] | CLH의 로그 레벨을 설정한다. |
[-v [server_name]] | 지정된 서버에 대한 로그 레벨을 설정한다. |
[-g [server_group_name]] | 지정된 서버 그룹에 대한 로그 레벨을 설정한다. |
[-m] | TMS에 대한 로그 레벨을 설정한다. |
-l [loglvl] | 실제 로그 레벨을 설정한다. 다음 중에 하나를 선택한다. 오른쪽으로 설정할수록 더 자세한 로그 확인이 가능하다. COMPACT, BASIC, DETAIL, DEBUG1, DEBUG2, DEBUG3, DEBUG4 |
예제
다음은 TMM의 로그 레벨를 변경하는 예제이다.
tmaxh2:/data1/starbj81/tmax/config> tmadmin -l -m --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxh2 (tmadm): chlog -t -l DEBUG4 log level is updated $3 tmaxh2 (tmadm): cfg -n node_name = tmaxh2, hostname = tmaxh2, node_no = 1 ... tmmloglvl = DEBUG4, ...
다음은 CLH의 동적 로그 레벨를 변경하는 예제이다.
tmaxh2:/data1/starbj81/tmax/config> tmadmin -m -l --- Welcome to Tmax Admin (Type "quit" to leave) --- $$1 tmaxh2 (tmadm): chlog -c -l COMPACT log level is updated $$2 tmaxh2 (tmadm): cfg -n node_name = tmaxh2, hostname = tmaxh2, node_no = 1 tmmloglvl = DEBUG4, clhloglvl = COMPACT, ...
다음은 TMS의 동적 로그 레벨를 변경하는 예제이다.
$$3 tmaxh4 (tmadm): chlog -m -g svg32306X -l debug3 log level is updated $$4 tmaxh4 (tmadm): cfg –g svg_name = svg32306X, svg_no = d tmsloglvl = DEBUG3, ...
다음은 특정 서버 그룹의 동적 로그 레벨를 변경하는 예제이다.
$$4 tmaxh2 (tmadm): chlog -g svg3 -l DETAIL log level is updated $$5 tmaxh2 (tmadm): cfg -g svg_name = svg3, svg_no = 10002 loglvl = DETAIL ...
트랜잭션 처리 중 TMS 장애 혹은 네트워크 장애로 인하여 일정 시간 트랜잭션이 처리되지 않을 경우, 관리자가 Commit / Rollback을 재이슈하여 해당 트랜잭션을 종료하는 기능이다. txcommit의 경우는 PHASE 2단계에서 Decision이 Commit일 경우에만 사용 가능하며 txrollback의 경우는 PHASE 1단계 또는 PHASE에서 Decision이 Rollback일 경우에만 사용 가능하다.
사용 방법
$$1 tmax1 (tmadm): txrollback(txr) | txcommit(txc) [-w] [-y]
<upper-global-xid><lower-global-xid>
항목 | 설명 |
---|---|
[-w] | 도메인 서브 트랜잭션일 경우 사용한다. |
[-y] | txcommit / txrollback의 확인 과정을 거치지 않는다. |
upper-global-xid | 처리하고자 하는 xid의 gtid의 앞의 4Byte 이다. |
lower-global-xid | 처리하고자 하는 xid의 gtid의 뒤의 4Byte 이다. |
txcommit / txrollback은 txquery에서 조회된 트랜잭션에 대한 재처리 도구이며, 재이슈 후 처리 결과를 다시 txquery를 통해서 확인해야 한다.
Tmax를 운영 중에 서비스 정보 설정을 변경하거나 웹 서비스 게이트웨이 설정을 변경할 상황이 생길 수 있다. 이런 경우 Tmax 시스템은 tmadmin의 wsgwreload 명령어를 실행하여 적용한다. 명령어가 실행되면 웹 서비스 게이트웨이는 새롭게 요청되는 서비스에는 응답하지 않으며 이미 처리 중인 서비스만 처리한 후 설정을 적용하고 서비스를 처리하기 시작한다.
사용 방법
$$1 tmax1 (tmadm): wsgwreload [-i svrid[svrid]]
옵션 | 설명 |
---|---|
[ -i svrid [ svrid]] | 적용한 svrid 리스트를 입력한다. |
restart 명령어는 현재 기동되어 있는 서버 프로세스를 다운 시킨 후, MIN 개수만큼 재기동 시키는 명령어이다.
사용 방법
$$1 tmax1 (tmadm): restart [-v[server_name]] [-g[server_group_name]]
옵션 | 설명 |
---|---|
[-v[server_name]] | 적용한 서버를 재기동한다. |
[-g[server_group_name]] | 적용한 서버그룹의 서버들을 재기동한다. |
예제
다음은 사용한 예제이다.
$$2 tmaxc1 (tmadm): restart -v svr01021 >> suspend ok >> down ok >> boot ok >> resume ok >> reboot svr svr01021 finished $$2 tmaxc1 (tmadm): restart -g svg1 >> suspend ok >> down ok >> boot ok >> resume ok >> reboot svr svr01021 finished >> suspend ok >> down ok >> boot ok >> resume ok >> reboot svr svr01022 finished
notify_reconnect_clh 명령어는 현재 기동되어 있는 특정 서버 프로세스에게 특정 CLH로 재접속하라는 통지를 전달한다. 이 통지를 받은 서버 프로세스는 해당 CLH와의 연결이 해제되어 있다면 재접속을 시도한다. 축약 명령어는 nrc 이다.
사용 방법
$$1 tmax1 (tmadm): nrc [clh_index] [spri_index ]
옵션 | 설명 |
---|---|
[clh_index] | 재접속할 CLH의 번호를 지정한다. CLH 번호는 0번부터 시작한다. |
[spri_index] | 재접속 통지할 서버 프로세스의 spri 를 지정한다. |
예제
다음은 사용한 예제이다.
$$2 tmaxc1 (tmadm): nrc 0 42 >> clh reconnect ok $$2 tmaxc1 (tmadm): nrc 0 -1 >> error clh reconnect