관리 도구

본 장에서는 Tmax의 효율적인 관리를 위해 제공되는 관리 도구에 대해서 설명한다.

1. 개요

Tmax 시스템이 동작하고 있다면 현재 환경설정에 대한 정보를 확인해 보고 이를 동적으로 변경하거나 서버 프로그램에 서비스를 추가하는 등의 시스템에 대한 관리가 필요하다. 또한 제공되는 서비스 중 특정 서비스에 대하여 현재 처리 상태 즉, 몇 건의 서비스를 처리해 왔으며, 평균 처리 시간이 얼마나 되며, 몇 건의 요청이 대기하고 있는지, 그 서비스를 제공받기 위해서는 얼마나 기다려야 하는지 등의 정보를 확인할 필요가 있다. 이 정보에 따라 서버 프로세스를 더 기동하거나 종료시키는 등의 조치도 필요하다.

Tmax 시스템은 명령어 인터프리터 형태의 명령어를 이용하여 동적 시스템 관리를 할 수 있도록 tmadmin을 제공한다.

2. tmadmin

tmadmin 프로그램은 UNIX 환경의 셸과 비슷한 명령어 인터프리터이다. 항상 프롬프트(prompt) 상태로 대기 중이다가 입력되는 명령어를 해석하여 이를 실행한다. 여러 노드를 한 도메인으로 사용하는 경우 tmadmin으로 전체에 대한 중앙 관리가 가능하며, 각각의 노드별로 로컬에서 관리가 가능하다.

  • 사용방법

    $ tmadmin [-l] [-s|m] [-h] [-f [config_file]] [-n [node_name]]
              [-v] [-V] [-p] [-t] [-i lic_info]
    항목 설명

    [ -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 명령어를 사용하여 수행할 경우 한 건의 명령이 종료되면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다).

    [-i lic_info]

    입력한 license.dat 파일의 라이선스 정보를 출력한다.

명령어 실행

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을 실행한 후 사용할 수 있는 명령어 목록이다.

  • 환경 정보 조회

    명령어 설명

    config(cfg)

    환경설정 내용을 조회한다.

    configopt(cfgopt)

    TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 설정의 현재 설정값을 조회한다.

    licinfo

    라이선스 정보를 조회한다.

    tmaxinfo(ti)

    Tmax 시스템 정보를 확인한다.

  • 동작 상태 정보 조회

    명령어 설명

    ajgwinfo(ajgwi)

    JEUS Async 게이트웨이의 정보를 확인한다.

    clhsinfo(clhsi)

    멀티 노드 환경에서 CLH 사이의 연결 상태 정보를 확인한다.

    cliinfo(ci)

    접속 클라이언트를 확인한다.

    gwinfo(gwi)

    GATEWAY 절에 정의한 게이트웨이들의 채널 상태를 확인한다.

    jgwinfo(jgwi)

    JEUS 게이트웨이의 정보를 확인한다.

    nontxgwinfo(ntxgwi)

    Tmax Non 트랜잭션 게이트웨이의 정보를 확인한다.

    repeat(r)

    명령어를 반복한다.

    rqstat(rqs)

    RQ의 상태를 확인하거나 디스크 큐에 쌓여있는 서비스를 처리한다.

    smtrc

    GID를 이용하여 해당 서비스의 수행 상태를 조회한다.

    stat(st)

    프로세스 및 서비스 상태의 통계를 낸다.

    svrinfo(si)

    서버 정보를 확인한다.

    tmmsinfo(tmmsi)

    멀티 노드 환경에서 TMM 사이의 연결 상태 정보를 확인한다.

    txgwinfo(txgwi)

    Tmax 게이트웨이의 정보를 확인한다.

    txquery(txq)

    트랜잭션 처리 정보를 확인한다.

    wsgwinfo(wsi)

    웹 서비스 게이트웨이의 정보를 확인한다.

  • 운용 관리

    명령어 설명

    admnoti(an)

    TCS, UCS, RDP 서버로 이벤트를 전송한다.

    advertise(adv) / unadvertise(unadv)

    특정 서비스명을 advertise/unadvertise한다.

    cfgadd(ca)

    동적으로 서비스를 추가한다.

    chlog

    TMM, CLH, 특정 서버의 로그 레벨을 런타임 도중 동적으로 변경한다.

    chlog2

    로그 레벨을 런타임 도중 동적으로 변경한다.

    chtrc

    트레이스 관리를 한다.

    cleandynsvc(cleands)

    서버 프로세스 개수가 0개인 서버에 속하는 동적 등록된 서비스들을 삭제하는 기능이다.

    discon(ds)

    접속 중인 클라이언트를 강제로 해제한다.

    logstart(logs) / logend(loge)

    로깅을 시작/종료한다.

    notify_reconnect_clh(nrc)

    특정 서버 프로세스에 특정 CLH 에 연결을 하라고 명령한다.

    qpurge(qp)

    큐에 쌓인 업무를 삭제한다.

    rebootsvr(rbs)

    서버 프로그램을 교체한다.

    reconnect_clh(rc)

    CLH와 다른 노드의 재연결을 시도한다.

    reopen_db

    서버 그룹에 속한 모든 TMS 및 서버 프로세스들이 데이터베이스에 재연결한다.

    restart(rst)

    서버 프로세스를 재기동한다.

    restat

    특정 서버 프로세스 또는 모든 서버 프로세스의 통계정보를 초기화한다.

    resume(rs)

    중지된 서버 프로세스를 재개한다.

    set

    현재 설정된 환경설정 값을 동적으로 변경한다.

    setopt

    TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 환경설정 값을 동적으로 변경한다.

    suspend(sp)

    동작 중인 서버 프로세스를 중지한다.

    txcommit / txrollback

    트랜잭션 처리 중에 장애가 발생하는 경우 commit/rollback을 재이슈하여 해당 트랜잭션을 종료하는 기능이다.

    wsgwreload(wsrld)

    웹 서비스 게이트웨이의 서비스 정보, 설정 변경을 적용한다.

  • 기타

    명령어 설명

    !

    바로 전에 사용한 명령어를 반복한다.

    help(h)

    사용 가능한 옵션 리스트를 조회한다.

    history(hist)

    이전에 저장된 명령어를 조회한다.

    nodeset(ns)

    멀티 노드 환경에서 특정 노드에 대한 정보만을 얻으려는 경우에 사용한다.

    nodeunset(nus)

    멀티 노드 환경에서 특정 노드에 대한 정보만을 얻으려는 설정을 해제한다.

    tmd

    가상의 클라이언트 애뮬레이터로서 서비스 프로그램의 유효성을 검토하는 경우 클라이언트 프로그램을 별도로 작성하지 않고 이 유틸리티를 이용한다.

    quit(q)

    tmadmin을 종료한다.

3. 환경 정보 조회

3.1. config(cfg)

현재 동작 중인 시스템의 환경 정보를 알려준다. 환경 파일에서 정의된 도메인, 노드, 서버 그룹, 서버, 서비스별로 기본값까지 포함한 모든 환경 정보를 확인할 수 있다. 출력되는 항목에 대한 자세한 설명은 환경 파일 설정을 참고한다.

  • 사용 방법

    $$1 tmax1 (tmadm): config (cfg) [-d] [-n] [-g [servergroup_name]]
                                    [-v[server_name]] [-s [service_name] [-x]]
                                    [-w [gateway_name]] [-r] [-b] [-f] [-pr]
    항목 설명

    [-d]

    도메인에 대한 환경 정보를 조회한다.

    환경 파일의 DOMAIN 절과 관련된 모든 항목 내용과 도메인에 존재하는 정보를 확인할 수 있다.

    [-n]

    전체 노드에 대한 환경 정보를 조회한다.

    환경 파일의 NODE 절과 관련된 모든 항목 내용과 시스템에서 내부적으로 정의된 정보를 확인할 수 있다.

    [-g [servergroup_name]]

    서버 그룹에 대한 환경 정보를 조회한다.

    서버 그룹명을 지정하면 그 서버 그룹에 대한 정보만을 조회하고 서버 그룹명을 지정하지 않으면 모든 서버 그룹에 대한 정보를 조회한다.

    그룹별로 각 서버 그룹에 대하여 환경 파일의 SVRGROUP 절과 관련된 모든 항목 내용을 확인할 수 있다.

    [-v [server_name]]

    서버에 대한 환경 정보를 조회한다.

    서버명을 지정하면 그 서버에 대한 정보만을 조회하고 서버명을 지정하지 않으면 모든 서버에 대한 정보를 출력한다.

    서버별로 각 서버에 대하여 환경 파일의 SERVER 절과 관련된 모든 항목 내용과 내부적으로 정의된 서버 번호(svr_no), 서버와 관련된 데이터 의존형 라우팅 정보(ddri)를 확인할 수 있다.

    [-s [service_name] [-x]]

    서비스에 대한 환경 정보를 조회한다.

    서비스명을 지정하면 그 서비스에 대한 정보만을 조회하고 이름을 지정하지 않으면 모든 서비스에 대한 정보를 출력한다.

    서비스별로 각 서비스에 대하여 환경 파일의 SERVICE 절과 관련된 모든 항목 내용을 확인할 수 있다.

    [-x] 옵션을 사용할 경우 txtime 정보를 추가로 출력한다.

    [-w [gateway_name]]

    게이트웨이에 대한 환경 정보를 조회한다.

    게이트웨이명을 지정하면 그 게이 트웨이에 대한 정보만을 조회하고 이름을 지정하지 않으면 모든 게이트웨이에 대한 정보를 출력한다.

    [-r]

    라우팅 환경 정보를 조회한다.

    [-b]

    백업 환경 정보를 조회한다.

    [-f]

    TopEnd의 함수 정보를 조회한다.

    [-pr]

    TopEnd의 product 정보를 조회한다.

  • 예제

    • 도메인의 환경 정보(-d)

      다음은 도메인의 환경 정보를 확인하는 예제이다.

      $$1 tmax8 (tmadm): cfg -d
          domain_name = tmax1,
               shmkey = 79190,
               minclh = 1,
               maxclh = 3,
               maxuser = UNLIMITED,
               portno(portno) = 7789,
               racport = 3333,
               cmtret = YES,
               blocktime(bt) = 30.000,
               txtime(tt) = 0.000,
               nliveinq(ni) = 30,
               security = NONE,
               cpc = 1,
               maxfunc = 0,
               clichkint(clichkint) = 0,
               idletime(idletime) = 0,
               node_count = 1,
               svg_count = 6,
               svr_count = 14,
               cousin_count = 0,
               cousin_gcount = 0,
               backup_count = 0,
               backup_gcount = 0,
               rout_count = 0,
               rout_gcount = 0,
               maxsacall = 8,
               maxcacall = 16,
               nclhchktime(nclhchktime) = -1,
               txpendingtime(txpendingtime) = 0,
               maxconv_node = 16,
               maxconv_server = 8,
               maxnode = 32,
               maxsvg = 32,
               maxspr = 64,
               maxsvr = 64,
               maxsvc = 512,
               maxcpc = 150,
               maxtms = 32,
               maxrout = 16,
               maxroutsvg = 32,
               maxrq = 2,
               maxgw = 2,
               maxcousin = 16,
               maxcousinsvg = 32,
               maxbackup = 16,
               maxbackupsvg = 32,
               maxtotalsvg = 64,
               maxprod = 0,
               tipsvc = ,
               crypt = NO,
               maxthread = 128,
               tmmloglvl = DETAIL,
               clhloglvl = DETAIL,
               tlmloglvl = DETAIL,
               casloglvl = DETAIL,
               rsloglvl = DETAIL,
               sqloglvl = DETAIL,
               tgloglvl = DETAIL,
               tmsloglvl = DETAIL,
               hmsloglvl = DETAIL,
               rqloglvl = DETAIL,
               gwloglvl = DETAIL,
               cllloglvl = DETAIL,
               loglvl = DETAIL,
               cllblock = NO,
               tdl = NO,
               maxconvn = 16,
               maxconvs = 8,
               domainid = 0,
               fdlversion = 1,
               tgshmsize = 0,
               tgmax = -1,
               tgmax_child = -1,
               tgmax_watcher = -1,
               tgheartbeat = 0,
               tgtimeout = 0,
               tg_mcast_ip = 224.0.0.100,
               tg_portno = 9999,
               tghistorycount = 50,
               tgstandbycount = 50,
               tgmaxbuffersize = 65000,
               tgdownwaittime = 30,

      다음은 명령어를 실행하는 경우 출력되는 항목에 대한 설명이다.

      항목 설명

      nodecount

      도메인에 존재하는 노드 개수이다.

      svgcount

      서버 그룹 개수이다.

      cousin_gcount

      COUSIN 항목이 정의된 그룹 개수로 부하 조절을 위한 복사 서버 그룹 개수이다.

      cousin_count

      모든 복사본 서버 그룹의 개수이다.

      rout_count

      ROUTING 절에 정의된 라우팅 개체의 개수이다.

      relem_count

      각 라우팅 개체의 범위 항목에 정의된 각 범위별 라우팅 단위 개수이다.

    • 전체 노드의 환경 정보(-n)

      다음은 전체 노드의 환경 정보를 확인하는 예제이다.

      $$1 tmax8 (tmadm): cfg -n
          node_name = tmax8, hostname = tmax8, node_no = 0
               load = 0,
               shmkey = 79190,
               minclh = 1,
               maxclh = 3,
               maxuser = UNLIMITED,
               Supported maximum user per node = 15931,
               Supported maximum user per handler = 15932,
               clhqtimeout(cqt) = 0,
               portno(portno) = 7789,
               racport = 3333,
               tmaxhome = /data/tmaxha/tmax/,
               tmaxdir = /data/tmaxha/tmax/,
               appdir = /data/tmaxha/tmax/appbin/,
               pathdir = /data/tmaxha/tmax/path/,
               tlogdir = /data/tmaxha/tmax/log/tlog/,
               slogdir = /data/tmaxha/tmax/log/slog/,
               ulogdir = /data/tmaxha/tmax/log/ulog/,
               envfile = ,
               svgcount = 6,
               svrcount = 14,
               svccount = 24,
               curclh = 1,
               sprcount = 14,
               tmscount = 6,
               cpccount = 10,
               cmprsize(cmprsize) = -1,
               ipcperm = 1c0,
               clichkint(clichkint) = 0,
               idletime(idletime) = 0,
               tmmopt = ,
               clhopt = ,
               tlmopt = ,
               realsvr = ,
               rscpc = 4,
               maxsvg = 32,
               maxsprs = 64,
               maxsvr = 64,
               maxtmss = 32,
               maxcpc = 150,
               maxgwsvr = 2,
               maxrqsvr = 2,
               maxgwcpc = 8,
               restart(rs) = YES,
               maxrstart(mr) = -1,
               gperiod(gp) = 86400,
               autobackup(ab) = YES,
               extport = 0,
               maxthread = 128,
               cllblock(cb) = NO,
               cllconnlb(cllconnlb) = RR,
               cllbindip = YES,
               tdl = NO,
               sqkey = 78550,
               sqsize = 8388608,
               sqmax = 1024,
               sqkeymax = 64,
               sqtimeout = 30,
               smsupport = NO,
               msgsizewarn(msw) = 1073741824,
               msgsizemax(msx) = 1073741824,
               tgshmkey = -1,
               tgid = -1,
               tgmcast_ttl = 1,
               tgmcast_if = ,
               crypt_algorithm = "",
               svclog_format = "",
               casthread = -1,
               cas = "",
               security_lib = "",
               crypt_lib = ""

      다음은 명령어를 실행하는 경우 출력되는 항목에 대한 설명이다.

      항목 설명

      node_no

      시스템에서 내부적으로 정의된 노드 번호이다.

      svgcount

      노드 내에 존재하는 서버 그룹 개수이다.

      svrcount

      서버 개수이다.

      svccount

      서비스 개수이다.

      curclh

      노드에서 동작 중인 CLH 프로세스 개수이다.

      maxsprs

      동작 가능한 최대 서버 프로세스의 개수이다.

      maxtms

      최대 TMS 프로세스 개수이다.

      autobackup

      backup으로 선언되어 있는 svg의 서버들을 자동으로 기동할지 여부를 설정한다. (Y|N)

      주로 tmdown -i 로 main 노드를 down시킬 경우 자동으로 backup 서버들이 기동되지 않도록 하기 위해서 N으로 변경하고 tmdown 시키고 다시 Y로 변경하는 방법으로 운영한다.

      tmadmin을 실행하는 노드 또는 접속된 노드가 set 명령으로 설정하려는 노드가 아닌 경우에는 아래와 같이 에러가 출력되며 변경사항이 반영되지 않는다.

      no such name(nodename) for the section defiend in config.

      또한 다른 노드의 설정을 변경하려면 대상 노드에 racd가 실행되어 있어야 한다.

    • 서버 그룹의 환경 정보(-g)

      다음은 서버 그룹의 환경 정보를 확인하는 예제이다.

      $$2 tmax8 (tmadm): cfg -g svg2
          svg_name = svg2, svg_no = 3
               xaoption = ,
               openinfo = Oracle_XA+Acc=P/scott/tiger+SesTm=60+DbgFl=7+LogDir=/data/tmaxha/tmax/log/xalog,
               closeinfo = ,
               appdir = ,
               ulogdir = ,
               svgtype = TMAX,
               envfile = ,
               tmsname = tms_ora,
               mintms = 2,
               maxtms = 3,
               curtms = 2,
               tmstype = STD,
               tmsthreads = 0,
               tmsopt =  -o svg2 -e svg2,
               tmsrecovery = YES,
               tmsloglvl = DEBUG4,
               tmsrange = DOMAIN,
               tmsxatime(tmsxatime) = 0,
               load(ld) = -9,
               tms starti = 0,
               tms endi = 2,
               restart(rs) = YES,
               maxrstart(mr) = -1,
               gperiod(gp) = 86400,
               autobackup = YES,
               dummy = NO,
               dbname = ORACLE,
               rmid = 0,
               svclog_format = ""
    • 서버의 환경 정보(-v)

      서버의 환경 정보를 확인하는 예제이다.

      $$4 tmax8 (tmadm): cfg -v svr2
      svr_name = svr2, svr_no = 5
               svgno = 2,
               cursvr = 1,
               clopt = ,
               seq = -1,
               minsvr = 1,
               maxsvr(max) = 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(schedule) = FA,
               cpc = 1,
               dummy = NO,
               aus = NO,
               mac(mac) = NO,
               roc(roc) = NO,
               multiclh = YES,
               ctx_ereply = NO,
               svrqtimeout(sqt) = -1,
               inbound_cpc = 1,
               svclog_format = ""
    • 서비스의 환경 정보(-s)

      다음은 서비스의 환경 정보를 확인하는 예제이다.

      $$5 tmax8 (tmadm): cfg -s
      -------------------------------------------------------------------------------------------
      svc_name          funcname      prio(pr)  autotran  svctime(st)  routno  svrname      svgno
      -------------------------------------------------------------------------------------------
      _hms01                              50          NO          0.000      -1    _hms01        4
      TOLOWER                             50          NO          0.000      -1    svr2          2
      TOUPPER                             50          NO          0.000      -1    svr2          2
      HMS                                 50          NO          0.000      -1    svr_hms       2
      FDLTOLOWER                          50          NO          0.000      -1    svr3          2
      FDLTOUPPER                          50          NO          0.000      -1    svr3          2
      gw1                                 50          NO          0.000      -1    gw1           0
      gw2                                 50          NO          0.000      -1    gw2           1
      SDLTOLOWER                          50          NO          0.000      -1    svr1          2
      SDLTOUPPER                          50          NO          0.000      -1    svr1          2
      _rq1                                50          NO          0.000      -1    _rqsvg        5
      LOGIN                               50          NO          0.000      -1    svr_ucs       2
      TPDEQ                               50          NO          0.000      -1    svr_rq        2
      TPENQ                               50          NO          0.000      -1    svr_rq        2
      FDLDEL                              50          NO          0.000      -1    fdltest       3
      SDLDEL                              50          YES         0.000      -1    sdltest       3
      FDLSEL                              50          NO          0.000      -1    fdltest       3
      FDLINS                              50          NO          0.000      -1    fdltest       3
      TOUPPER_CONV                        50          NO          0.000      -1    svr_conv      2
      SDLSEL                              50          YES         0.000      -1    sdltest       3
      SDLINS                              50          YES         0.000      -1    sdltest       3
      FDLUPT                              50          NO          0.000      -1    fdltest       3
      SDLUPT                              50          YES         0.000      -1    sdltest       3
      GET_SQ                              50          NO          0.000      -1    svr_sq        2
    • 게이트웨이의 환경 정보(-w)

      다음은 게이트웨이의 환경 정보를 확인하는 예제이다.

      $$7 tmax8 (tmadm): cfg -w gw1
          gw_name = gw1, node_no = 0, gw_no = 0
          gw_type = TMAXNONTX,
          portno = 4021,
          rgwaddr = 192.168.1.86,
          rgwportno = 4021,
          backup_rgwaddr = ,
          backup_rgwportno = -1,
          backup_rgwaddr2 = ,
          backup_rgwportno2 = 0,
          backup_rgwaddr3 = ,
          backup_rgwportno3 = 0,
          cpc = 1,
          timeout(timeout) = 11000,
          direction(direction) = BIDIR,
          maxinrgw = 32,
          clopt = -i,
          ptimeout(ptimeout) = -1,
          ptimeint(ptimeint) = -1,
          gwchkint(gwchkint) = -1,
          gwconnect_timeout = -1,
          nliveinq(nliveinq) = -1

3.2. configopt(cfgopt)

TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 설정의 현재 설정값을 조회한다.

  • 사용 방법

    $$1 tmax1 (tmadm): configopt (cfgopt) [-tmm | -gw gwname]
    항목 설명

    -tmm

    TMMOPT 환경설정에 정의된 옵션 중 동적 변경이 가능한 옵션들의 현재 설정된 값을 확인한다.

    -gw gwname

    GATEWAY 절의 CLOPT 환경설정에 정의된 옵션 중 동적 변경이 가능한 옵션들의 현재 설정된 값을 확인한다.

  • 예제

    • TMMOPT의 환경 정보(-d)

      다음은 TMMOPT 환경설정의 환경 정보를 확인하는 예제이다.

      $$1 node1 (tmadm): cfgopt -tmm
      ------------------------------------------------------------------------
              -tmm configurable value
      ------------------------------------------------------------------------
               accept retry count               (-A) = 100
               max forked threshold             (-F) = 95
               booting timeout                  (-t) = 10
               auto failback                    (-D) = 1
               node check try count             (-R) = 0
      ------------------------------------------------------------------------

      다음은 명령어를 실행할 경우 출력되는 항목에 대한 설명이다.

      항목 설명

      accept retry count(-A)

      서버 프로세스의 접속 요청에 대해서 accept를 처리할 때 한 번에 처리할 횟수이다. TMMOPT의 -A 옵션 설명을 참조한다.

      max forked threshold(-F)

      TMM에서 서버 프로세스의 추가 기동이나 프로세스 재기동 등으로 인해 새로운 프로세스를 생성할 때 동시에 처리할 수 있는 최대 개수이다.

      TMMOPT의 -F 옵션 설명을 참조한다.

      booting timeout(-t)

      ASQCOUNT로 기동된 서버 프로세스의 접속 타임아웃 시간이다.

      TMMOPT의 -t 옵션 설명을 참조한다.

      auto failback(-D)

      FailBack을 수행하는 경우 백업으로 설정된 서버 그룹의 서버 프로세스들이 자동으로 종료되는지 여부를 설정한다.

      1을 지정하면 활성화되고 0을 지정하면 비활성화된다.

      node check try count (-R)

      기본적으로 백업 서버 그룹의 PRIMARY 노드에서 장애가 발생한 뒤 NLIVEINQ 설정 시간이 지나면 바로 FailOver 동작(백업 서버 그룹 기동)을 한다. 이 옵션을 지정하면 해당 노드의 TMM으로 Retry Count만큼 재연결 시도를 하고, 설정한 횟수의 재연결이 모두 실패한 경우에 FailOver를 수행한다. 기본값은 0이며 1 이상의 값을 지정한다. 자세한 설명은 NODE 절의 "TMMOPT 항목"을 참고한다.

    • GATEWAY절 CLOPT의 환경 정보(-d)

      다음은 게이트웨이의 CLOPT 환경설정의 환경 정보를 확인하는 예제이다.

      $$1 node1 (tmadm): cfgopt -gw gw1
      ------------------------------------------------------------------------
              -gw configurable value
      ------------------------------------------------------------------------
               debug log level                  (-D) = 0
      ------------------------------------------------------------------------

      다음은 명령어를 실행할 경우 JEUS 게이트웨이에서 출력되는 항목에 대한 설명이다. 게이트웨이의 종류에 따라 설정 가능한 항목이 다르다.

      항목 설명

      debug log level (-D)

      현재 설정된 Debug log의 로깅 레벨을 표시한다.

3.3. licinfo

현재 기동된 Tmax 라이선스 정보를 확인한다.

  • 사용 방법

    $$1 tmax1 (tmadm): licinfo
  • 예제

    다음과 같이 현재 기동된 Tmax의 라이선스 정보를 확인할 수 있다.

    $$1 gnibm (tmadm): licinfo
    
            ###############################################
              Current License Image (node: gnibm)
            ###############################################
    
    License seqno: TRS-xxxx-xxx-xxx
    License issue date: 2022/8/3
    License type: REAL
    Edition: Standard
    Licensed sub-products:
            Distributed transaction support
            Reliable Queue subsystem
            Hybrid Messaging System
            Session Queue subsystem
            Separate UCS type server license : 32768 CPCs
            Multi-Domain transaction gateway
            Multi-Domain non-transaction gateway
            Jeus gateway
            Jeus asynchronous gateway
            Tuxedo gateway
            Tuxedo asynchronous gateway
            Web-Service gateway
            Tmax XA gateway
            HostLink gateway
            TCP/IP (thread) gateway
            X.25 gateway
            Serial(RS232) gateway
            WebT components
            Torus components
            Entera gateway
            Topend gateway
            Anylink license
            OpenFrame license
            Global Queue subsystem
            Deployment subsystem
    License check by hostname: gnibm
    Unlimited license

3.4. tmaxinfo(ti)

현재 접속된 Tmax 시스템의 환경 정보를 조회한다.

  • 사용 방법

    $$1 tmax1 (tmadm): ti
  • 예제

    다음과 같이 시스템 버전(version), 최대 사용자 수(maxuser) 등을 확인할 수 있다.

    $$1 tmax8 (tmadm): ti
    
    Tmax System Info: REAL version 6.0:
    
             maxuser = UNLIMITED,
             Supported maximum user per node = 16076,
             Supported maximum user per handler = 16077,
             domaincount = 1,
             nodecount = 1,
             svgrpcount = 1,
             svrcount = 1, svccount = 1
             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   tmax8      7789   3378    87789   755872       1      3

4. 동작 상태 정보

4.1. jgwinfo(jgwi) / ajgwinfo(ajgwi)

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

4.2. clhsinfo(clhsi)

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

    노드간 CLH 상태이다.

    다음은 노드간 CLH 상태에 출력되는 값에 대한 설명이다.

    • NRDY(NOT_READY) : 대상 CLH와 연결이 되어 있지 않거나 연결이 끊어진 상태이다.

    • RDY(READY) : 정상적으로 연결되어 있는 상태이다.

4.3. cliinfo(ci)

현재 접속된 클라이언트의 환경 정보를 조회한다.

  • 사용 방법

    $$1 tmax1 (tmadm): ci [–s] [-c] [-P] [-p [portno, ...]]
    항목 설명

    [-s]

    연결된 총 클라이언트의 개수를 파악할 수 있다.

    [-c]

    암호화 모드로 접속한 클라이언트만 조회할 수 있다.

    [-P]

    포트 번호 정보와 qpcount, emaxcount 정보를 추가로 출력한다.

    [-p [portno, …​]]

    열거한 Tmax 접속 포트 번호에 대해서만 출력한다.

  • 예제

    다음은 명령어 사용 예제이다.

    $$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
    
    ...
    
    $$1 tmaxi9 (tmadm): ci -c
    CLH 0:
    --------------------------------------------------------------------------------------------------
     cli_id     clid     status  count  lastin_time  ipaddr             usrname        tmax_port
    --------------------------------------------------------------------------------------------------
    
          0  0x00000000  RUN         0            1  127.0.0.1:58235                    7189
          1  0x00000001  RUN         0            1  127.0.0.1:58236                    7389
          4  0x00000004  RUN         0            1  127.0.0.1:58239                    7289
    
    --------------------------------------------------------------------------------------------------
    Total Connected Clients(CRYPTED) = 3
    --------------------------------------------------------------------------------------------------
    
    $$1 tmaxi9 (tmadm): ci -p 7189,7289,7389,7489,7589
    CLH 0:
    ------------------------------------------------------------------------------------------------------------
     cli_id     clid     status  count  qpcount  emcount  lastin_time  ipaddr             usrname      tmax_port
    ------------------------------------------------------------------------------------------------------------
    
          0  0x00000000  RUN         0       0       0            1   127.0.0.1:58235                7189
          1  0x00000001  RUN         0       0       0            1   127.0.0.1:58236                7389
          2  0x00000002  RUN         0       0       0            1   127.0.0.1:58238                7489
          3  0x00000003  RUN         0       0       0            1   127.0.0.1:58237                7589
          4  0x00000004  RUN         0       0       0            1   127.0.0.1:58239                7289
    
    ------------------------------------------------------------------------------------------------------------
    Total(7189,7289,7389,7489,7589) Connected Clients = 5
    ------------------------------------------------------------------------------------------------------------
    
    $$8 tmaxh9 (tmadm): ci -P
    CLH 0:
    ------------------------------------------------------------------------------------------------------------
     cli_id     clid     status  count  qpcount  emcount  lastin_time  ipaddr              usrname     tmax_port
    ------------------------------------------------------------------------------------------------------------
    
          7  0x00000007  QED         0       0       0            27  192.168.1.34:63307              12399
          8  0x00000008  QED         0       0       0            27  192.168.1.34:63308              12399
          9  0x00000009  QED         0       0       0            27  192.168.1.34:63309              12399
         10  0x0000000a  QED         0       0       0            27  192.168.1.34:63310              12399
         11  0x0000000b  QED         0       0       0            27  192.168.1.34:63311              12399
    
    ------------------------------------------------------------------------------------------------------------
    Total Connected Clients = 5
    ------------------------------------------------------------------------------------------------------------

    다음은 명령어를 실행하면 조회되는 결과에 대한 설명이다.

    항목 설명

    cli_id

    클라이언트 ID이다.

    clid

    "노드번호+CLH번호+cli_id"를 조합한 16진수 값이다.

    status

    클라이언트의 현재 상태이다.

    다음은 출력 항목 중 status 항목에서 확인할 수 있는 상태이다.

    • RDY : 클라이언트가 정상적으로 CLH에 접속되어 있는 상태이다.

    • NRDY : CLH와 연결을 맺고 있는 클라이언트 중 TCP/IP 소켓만 연결되어 있고 정상적으로 연결 메시지(TPSTART 메시지)를 보내지 않은 상태이다.

    • QED : 클라이언트의 서비스 요청이 서버 큐에 쌓여 있는 상태이다.

    • CTING : 클라이언트가 CLH에 연결 중인 상태이다.

    • UNR : 클라이언트가 tpend()과정 중이거나 NCLH가 내려갈 때의 상태이다.

    • RUN : 클라이언트가 요청한 서비스가 실행 중인 상태이다.

    count

    서비스 처리 건수이다.

    qpcount

    queue에서 purge된 메시지들의 개수이다.

    emaxcount

    queue 안에 있는 메시지들이 max 값에 도달한 횟수이다.

    lastin_time

    클라이언트가 서비스 호출 후 대기하는 시간이다.

    ipaddr

    클라이언트의 접속 IP 주소이다. -P 혹은 -p 옵션 을 사용할 경우 포트 번호도 출력된다.

    usrname

    TPSTART_T 구조체의 usrname 필드에 정의한 사용자명이다.

    tmax_port

    Tmax 접속 포트 번호가 출력된다.

    비정상적으로 연결된 클라이언트가 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]

4.4. gwinfo(gwi)

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

4.5. txgwinfo(txgwi) / nontxgwinfo(ntxgwi)

tmadmin에서 리모트 게이트웨이와의 연결 상태를 확인할 수 있는 명령어이다. 이와 더불어 현재 메인 노드와 연결되어 있는지, 백업 노드와 연결되어 있는지, 어떤 노드와 연결되어 있는지의 상세한 정보를 확인할 수 있다. txgwinfo(txgwi)는 Tmax 게이트웨이의 정보를 확인하며, nontxgwinfo(ntxgwi)는 Tmax Non Transaction(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

4.6. repeat(r)

repeat은 상태 정보 반복 표시 기능으로 다음의 방식으로도 사용될 수 있다. 반복적인 명령어 수행은 상태 정보를 모니터링할 뿐 아니라 업무 수행에 대한 디버깅에도 많은 도움을 줄 수 있다.

  • 사용 방법

    $$1 tmax1 (tmadm): r -k n -i ms 반복 수행 명령어
    항목 설명

    -k n

    n번 반복 수행한다.

    -i ms

    ms(밀리초) 간격으로 반복 수행한다.

    반복 수행 명령어

    반복할 대상 명령어를 지정한다.

  • 예제

    다음은 5초의 간격을 두고 'st -s’를 30번 수행하는 것을 반복하는 예제이다.

    $$1 tmax1 (tmadm): r -k 30 -i 5000 st -s

    다음은 5초의 간격을 두고 'st -p’를 30초간 수행하는 것을 반복하는 예제이다.

    $$1 tmax1 (tmadm): r -k 30 -i 5000 st -p

4.7. rqstat(rqs)

현재 사용 가능한 RQ의 상태를 보여주거나 디스크 큐에 쌓여있는 서비스를 사용자가 처리할 수 있다.

  • 사용 방법

    $$1 tmax1 (tmadm): rqstat (rqs) [-l] [-s rqname] [-f rqname] [-c rqname] [-a]
    항목 설명

    [-l]

    사용 가능한 RQ를 보여준다.

    [-s rqname ]

    해당 RQ의 상태를 보여준다.

    [-f rqname]

    RQ에 쌓여 있는 서비스를 처리한다.

    [-c rqname]

    정체된 RQ를 제거한다.

    [-a]

    모든 RQ의 상태를 리스트 형태로 출력한다.

    [-f] 옵션과 [-c] 옵션을 사용하여 RQ를 처리하기 위해서는 tmadmin -m 옵션을 사용하여 마스터 모드로 동작하도록 해야 한다.

  • 예제

    • RQ의 상태 조회 (-a)

      각 레코드는 다음의 항목들을 표현한다.

      $$1 tmaxi9 (tmadm): rqs -a
      
                   rq1 RDY  0 0 0 0 0 5 5
      total count : 1

      출력되는 데이터는 다음의 형식으로 표시된다.

      rq이름 상태 request reply fail requestenqueued requestdequeued replyenqueued replydequeued

      마지막 레코드는 total count를 표시한다.

    • RQ 조회(-I)

      다음은 사용 가능한 RQ를 조회하는 예제이다.

      $$1 tmax1 (tmadm): rqs -l
      list of available RQs:
      rq1 rq2
    • RQ 상태 조회(-s)

      다음은 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
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    • RQ 서비스 처리(-f)

      다음은 RQ에 쌓여있는 서비스를 처리하는 예제이다.

      $$1 tmax1 (tmadm): rqs -f rq2
      RQ(rq2) flushed
    • RQ 제거(-c)

      다음은 정체된 RQ를 제거하는 예제이다.

      $$1 tmax1 (tmadm): rqs -c rq2
      RQ(rq2) statics cleared

4.8. smtrc

환경 파일 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이다.

4.9. stat(st)

실질적인 시스템 동작 상태를 나타내며, 동작 중인 서버 프로세스와 서비스에 대한 정보를 알 수 있다.

서버 프로세스의 현재 상태, 처리 중인 서비스명, 처리한 서비스 개수, 서비스에 대한 상태, 서비스 큐에 존재하는 서비스 요청 개수 등과 같은 동적인 정보를 확인할 수 있다. stat 명령어의 약어는 st이다.

  • 사용 방법

    $$1 tmax1 (tmadm): stat (st) {-v | -p | -s | -t | -q | -tg}
                 -v [server_process_name] [-pod] [-b]
                 -p [server_process_name] [-x [-j] | -X | -d [-j]] [-o sort_conditions [-n maxline]] [-b]
                 -s [service_name] [-x | -X | -spr] [-o sort_conditions [-n maxline]]
                 -t [TMS_name] [-x]
                 -q [destination_name] [-c]
                 -tg
    항목 설명

    -v [server_process_name] [-pod] [-b]

    서버 프로세스에 대한 정보를 조회한다(si와 동일).

    [-pod] 옵션을 사용하면 POD 서버의 상태 부분에 항상 "(POD)"가 출력된다.

    이 옵션이 없으면 POD 서버의 상태가 기동된 경우에는 RDY, 기동되지 않은 경우에는 NRDY로 표시된다. POD 서버는 NRDY 상태이더라도 서비스를 요청할 때 자동으로 기동되어 처리되므로 상태가 중요하지 않으며, 모니터링할 때 문제인 서버로 오해할 수 있다. 이 옵션을 사용하여 불필요한 오해를 줄일 수 있다.

    [-b] 옵션을 사용하면 서버 프로세스의 가장 마지막 기동 시각을 함께 표시한다.

    -p [server_process_name] [-d] [-j] [-b]

    서버 프로세스에 대한 정보를 조회한다.

    Tmax 환경 파일에 등록된 서버는 MIN과 MAX 항목을 사용하여 여러 개 동작할 수 있는데, 이들 각각의 동작 상황을 확인할 수 있다. 서버명을 지정하면 해당 서버명의 서버 프로세스들에 관한 정보들이 출력되고, 이름을 지정하지 않으면 동작 중인 모든 서버 프로세스들에 대한 정보가 출력된다.

    'st –p' 명령의 마지막 라인에 총 처리 건수, 전체 평균 처리시간, 현재 수행 중인 총 서비스 개수 통계 정보를 출력하여 시스템 처리 현황을 파악할 수 있다.

    [-d] 옵션을 사용하면 서버 프로세스가 RUN 상태일 때 경과시간이 표시된다. 그 외의 상태일 경우 '-'로 표시된다.

    [-j] 옵션을 사용하면 st -p -x, st -p -d 명령시 여러 라인에 나오는 항목들을 한 라인에 나오도록 한다.

    [-b] 옵션을 사용하면 서버 프로세스의 가장 마지막 기동 시각을 함께 표시한다.

    -s [service_name] [-spr]

    서비스에 대한 정보를 조회한다.

    서비스명을 지정하면 해당 서비스에 관한 정보만 출력되고, 서비스명을 지정하지 않으면 제공되는 모든 서비스에 관한 정보들이 출력된다.

    [-spr] 옵션을 함께 사용하면 해당 서비스를 서버 프로세스별로 상태정보가 출력된다. 일부 서버 프로세스만 suspend 된 경우 사용하면 프로세스 별로 상태정보를 확인 할 수 있다.

    -t [tms_name]

    시스템에서 제공하는 TMS에 대한 동적 정보를 알려준다.

    • TMS 이름을 지정하면 해당 TMS에 관한 정보만 출력된다.

    • TMS 이름을 지정하지 않으면 제공되는 모든 TMS에 관한 정보가 출력된다.

    [-x]

    'st –p' 또는 'st –s' 명령어를 이용하여 서버 프로세스나 서비스의 상태 조회와 다음의 항목을 추가적으로 조회한다. [–s] 옵션이나 [–p] 옵션과 함께 사용해야 한다. 자세한 내용은 "상세 정보(-x)"를 참고한다.

    • OS에서 제공하는 프로세스 ID(PID), Fail count, Error count,

    • 최소/최대 서비스 수행 시간(min_time, max_time)

    • 시스템, 사용자 CPU 수행 시간(utime, umin_time, umax_time, stime, smin_time, smax_time) (단, 서버 프로세스나 서비스가 GATEWAY 일 경우에 이 값은 0으로 표시)

    'st –t' 명령어를 이용하여 TMS의 상태 조회와 다음의 항목을 추가적으로 조회한다. [–t] 옵션과 함께 사용해야 한다.

    • 트랜잭션 ID(XID), XA 처리상태(xastate)

    • multi thread TMS일 경우 각 thread의 상태

    [-X]

    • [-s] 옵션과 함께 사용하는 경우

      COUSIN 서비스에 대하여 상태1(상태2)의 형태로 로컬 상태를 따로 조회할 수 있다. (예: RDY(NRDY))

      (상태2)가 실제적인 로컬 상태이며, [-X] 옵션을 사용하지 않을 경우 COUSIN 환경에서는 로컬 상태가 항상 RDY로 조회되는 문제점을 해결할 수 있다. 반드시 [–s] 옵션과 함께 사용해야 한다.

    • [-p] 옵션과 함께 사용하는 경우

      서버 프로세스의 Suspend 상태를 조회한다. Suspend 상태에 있다면 다음과 같이 표시된다. (예: RDY(BLK:Pp))

      서버 프로세스의 일부만 suspend할 수 있으며 부분적으로 suspend되는 경우에는 stat -v로 조회할 때 서버의 상태는 RDY로 표시되고, stat -p -X 로 조회할 때 suspend되어 있는 프로세스는 실제상태 뒤에 (BLK:Pp)가 함께 표시된다.

      (BLK:Pp)의 Pp 상태는 suspend 명령할 때 -n/-N 옵션에 따라서 달라진다.

      • Pp

        sp -n P -N P
      • Tp

        sp -n T -N P
      • Tt

        sp -n T -N T
      • Pt

        sp -n P -N T

    [-o sort_conditions [-n maxline]]

    [–o] 옵션은 특정 조건을 기준으로 조회 결과를 sort하여 출력하기 위한 옵션이다. Tmax 시스템에서 제공하는 서버 프로세스와 서비스에 대한 동적 정보를 조회할 경우 특정 조건을 바탕으로 sort해서 원하는 정보를 볼 수 있다. 반드시 [–p] 옵션이나 [–s] 옵션과 함께 사용되어야 한다.

    [-p] 와 함께 사용시 ca, ce, aa, ae 조건이 가능하며, [-s] 와 함께 사용시 ca, aa, cq, aq, qa 조건이 가능하다. 자세한 내용은 "내림 차순으로 sort 할 조건"을 참고한다.

    sort는 내림차순, 오름차순으로 설정이 가능하다.

    • [-o ca] : 내림차순

    • [-o ca-] : 오름차순

    [-n maxline] 옵션을 사용하면 sort되어 출력되는 메시지 라인(서버 프로세스 또는 서비스의 개수)을 지정할 수 있다.

    -q [destination_name] [-c]]

    HMS destination에 대한 정보를 보여준다. 환경설정 파일에서 설정한 destination의 목록과 각 destination에서 처리 중인 메시지의 정보를 확인할 수 있다.

    특정 destination을 지정하고 [-c] 옵션과 함께 사용하면 해당 destination에 대한 각 클라이언트의 상세한 정보를 조회할 수 있다.

    -tg

    TmaxGrid에 대한 정보를 조회한다.

  • 예제

    • 서버 프로세스의 정보 (–p)

      다음은 서버 프로세스의 정보를 확인하는 예제이다.

      $$24 tmax8 (tmadm): st -p
      
      CLH 0:
      ---------------------------------------------------------------------------
      svr_name     svgname     spr_no     status      count        avg        svc
      ---------------------------------------------------------------------------
      gw1          gw1             32        RDY          0   0.000000         -1
      gw2          gw2             33        RDY          0   0.000000         -1
      _hms01       hms01           34        RDY          2   0.000000         -1
      _hms01       hms01          105        RDY          0   0.000000         -1
      _hms01       hms01          106        RDY          0   0.000000         -1
      _hms01       hms01          107        RDY          0   0.000000         -1
      _rqsvg       rqsvg           35        RDY          0   0.000000         -1
      _rqsvg       rqsvg          109        RDY          0   0.000000         -1
      _rqsvg       rqsvg          110        RDY          0   0.000000         -1
      _rqsvg       rqsvg          111        RDY          0   0.000000         -1
      svr1         svg1            36        RDY          0   0.000000         -1
      svr2         svg1            37        RDY          0   0.000000         -1
      svr3         svg1            38        RDY          0   0.000000         -1
      svr_ucs      svg1            39        RDY          0   0.000000         -1
      svr_conv     svg1            40        RDY          0   0.000000         -1
      svr_rq       svg1            41        RDY          0   0.000000         -1
      svr_sq       svg1            42        RDY          0   0.000000         -1
      svr_hms      svg1            43        RDY          0   0.000000         -1
      fdltest      svg2            44        RDY          0   0.000000         -1
      sdltest      svg2            45        RDY          0   0.000000         -1
      ---------------------------------------------------------------------------
      TOTAL COUNT = 2
      TOTAL AVG = 0.000
      TOTAL RUNNING COUNT = 0

      다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.

      항목 설명

      svr_name

      서버 프로세스명이다.

      svgname

      서버 프로세스가 속해있는 서버 그룹명이다.

      spr_no

      각 서버별 프로세스의 ID이다.

      status

      서버 프로세스의 현재 상태이다.

      다음은 시스템 동작 상태 정보이다.

      • RDY : Ready 상태이다.

      • NRDY : Non-Ready 상태로 NRDY인 경우는 tpstart하고 클라이언트가 소켓으로 연결이 맺어진 상태에서 서버로부터 데이터가 전송이 안 되는 경우에 발생할 수 있는 상태이다. 예를 들면 네트워크 상태가 좋지 않을 경우에 발생할 수 있다.

      • RUN : 실행 중인 상태이다.

      • Unregisted : 등록되지 않은 상태로 클라이언트에 tpend 직후에 잠시 나왔다가 상태가 변경된다.

      • BLK : 해당 서비스의 모든 프로세스가 suspend된다.

      • PBLK : 해당 서비스의 일부 프로세스가 suspend된다.

      • UNADV : 해당 서비스가 속한 모든 서버 프로세스가 unadvertise된 상태이다.

      • PUNADV : 해당 서비스가 속한 일부 서버 프로세스가 unadvertise된 상태이다.

      count

      처리한 서비스 개수이다.

      avg

      프로세스의 평균 처리시간이다.

      svc

      처리 중인 서비스명이다. 현재 처리 중인 서비스가 없는 경우 -1로 표시된다.

      st 명령어는 와일드 카드도 사용할 수 있다. st –p s*을 입력하면 s로 시작하는 svr_name에 관한 정보만을 조회된다.

      $$25 tmax8 (tmadm): st -p s*
      
      CLH 0:
      ---------------------------------------------------------------------------
      svr_name     svgname     spr_no     status      count        avg        svc
      ---------------------------------------------------------------------------
      svr1         svg1            36        RDY          0   0.000000         -1
      svr2         svg1            37        RDY          0   0.000000         -1
      svr3         svg1            38        RDY          0   0.000000         -1
      svr_ucs      svg1            39        RDY          0   0.000000         -1
      svr_conv     svg1            40        RDY          0   0.000000         -1
      svr_rq       svg1            41        RDY          0   0.000000         -1
      svr_sq       svg1            42        RDY          0   0.000000         -1
      svr_hms      svg1            43        RDY          0   0.000000         -1
      sdltest      svg2            45        RDY          0   0.000000         -1
      ---------------------------------------------------------------------------
      TOTAL COUNT = 0
      TOTAL RUNNING COUNT = 0

      다음은 'st –p -j' 명령어를 사용한 예제이다.

      $$1 redhat73 (tmadm): st -p svr2 -d
      
      CLH 0:
         ------------------------------------------------------------------------------
         svr_name     svgname     spr_no     status      count        avg           svc
                          PID       scheduled
         ------------------------------------------------------------------------------
         svr2         svg1            37        RUN          0   0.000000    TOLOWER
                        27302    3.719207
         svr2         svg1            38        RDY          0   0.000000         -1
                        27301           -
         ---------------------------------------------------------------------------------
         TOTAL COUNT = 0
         TOTAL RUNNING COUNT = 1

      다음은 'st –p -d -j' 명령어를 사용한 예제이다.

      $$2 redhat73 (tmadm): st -p svr2 -d -j
      
      CLH 0:
         ------------------------------------------------------------------------------
         svr_name     svgname     spr_no     status      count        avg           svc         PID       scheduled
         ------------------------------------------------------------------------------
         svr2         svg1            37        RUN          0   0.000000    TOLOWER       27302    8.570694
         svr2         svg1            38        RDY          0   0.000000         -1       27301           -
         ---------------------------------------------------------------------------------
         TOTAL COUNT = 0
         TOTAL RUNNING COUNT = 1

      다음은 'st –p svr2 -b' 명령어를 사용한 예제이다.

      $$3 tmaxh9 (tmadm): st -p svr2 -b
      
      CLH 0:
         ------------------------------------------------------------------------------------
         svr_name         svgname         spr_no     status       count        avg        svc
                          PID       boottime
         ------------------------------------------------------------------------------------
         svr2             svg1                45        RDY           5   1.000000         -1
                          7129      17:31:57.188
         svr2             svg1                46        RDY           3   1.000000         -1
                          7130      2022-08-25
         ------------------------------------------------------------------------------------
         TOTAL COUNT = 0
         TOTAL RUNNING COUNT = 0
    • 서비스의 정보(–s)

      다음은 서비스의 정보를 확인하는 예제이다.

      $$13 tmax8 (tmadm): st -s
      
      CLH 0:
      ------------------------------------------------------------------------------------------------
      svc_name                          svr_name    count    q_cnt   aq_cnt    q_avg      avg   status
      ------------------------------------------------------------------------------------------------
      _hms01                            _hms01          2        0        1   0.000000   0.000000  RDY
      TOLOWER                           svr2            0        0        0   0.000000   0.000000  RDY
      TOUPPER                           svr2            0        0        0   0.000000   0.000000  RDY
      HMS                               svr_hms         0        0        0   0.000000   0.000000  RDY
      FDLTOLOWER                        svr3            0        0        0   0.000000   0.000000  RDY
      FDLTOUPPER                        svr3            0        0        0   0.000000   0.000000  RDY
      gw1                               gw1             0        0        0   0.000000   0.000000  RDY
      gw2                               gw2             0        0        0   0.000000   0.000000  RDY
      SDLTOLOWER                        svr1            0        0        0   0.000000   0.000000  RDY
      SDLTOUPPER                        svr1            0        0        0   0.000000   0.000000  RDY
      _rq1                              _rqsvg          0        0        0   0.000000   0.000000  RDY
      LOGIN                             svr_ucs         0        0        0   0.000000   0.000000  RDY
      TPDEQ                             svr_rq          0        0        0   0.000000   0.000000  RDY
      TPENQ                             svr_rq          0        0        0   0.000000   0.000000  RDY
      FDLDEL                            fdltest         0        0        0   0.000000   0.000000  RDY
      SDLDEL                            sdltest         0        0        0   0.000000   0.000000  RDY
      FDLSEL                            fdltest         0        0        0   0.000000   0.000000  RDY
      FDLINS                            fdltest         0        0        0   0.000000   0.000000  RDY
      TOUPPER_CONV                      svr_conv        0        0        0   0.000000   0.000000  RDY
      SDLSEL                            sdltest         0        0        0   0.000000   0.000000  RDY
      SDLINS                            sdltest         0        0        0   0.000000   0.000000  RDY
      FDLUPT                            fdltest         0        0        0   0.000000   0.000000  RDY
      SDLUPT                            sdltest         0        0        0   0.000000   0.000000  RDY
      GET_SQ                            svr_sq          0        0        0   0.000000   0.000000  RDY

      다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.

      항목 설명

      svc_name

      서비스명이다.

      svr_name

      서비스가 속한 서버명이다.

      count

      처리한 서비스 건수이다.

      avg

      서비스의 평균 처리시간이다.

      q_count

      현재 대기 중인 서비스 요청 건수이다.

      aq_count

      잠시라도 대기했던 총 서비스 요청 건수이다.

      q_avg

      서비스의 평균 대기시간이다.

      status

      서비스의 현재 상태이다. 상태에 대한 자세한 설명은 "시스템 동작 상태"를 참고한다.

      와일드 카드를 사용해서 'st -s *W’를 입력하면 W로 끝나는 서비스에 대한 정보만 조회된다.

      $$27 tmax8 (tmadm): st -s *R
      
      CLH 0:
      ------------------------------------------------------------------------------------------------
      svc_name                          svr_name    count    q_cnt   aq_cnt    q_avg      avg   status
      ------------------------------------------------------------------------------------------------
      TOLOWER                           svr2            0        0        0   0.000000   0.000000  RDY
      TOUPPER                           svr2            0        0        0   0.000000   0.000000  RDY
      FDLTOLOWER                        svr3            0        0        0   0.000000   0.000000  RDY
      FDLTOUPPER                        svr3            0        0        0   0.000000   0.000000  RDY
      SDLTOLOWER                        svr1            0        0        0   0.000000   0.000000  RDY
      SDLTOUPPER                        svr1            0        0        0   0.000000   0.000000  RDY

      다음은 'st –s TOUPPER -spr' 명령어를 사용한 예제이다.

      $$7 redhat73 (tmadm): st -s TOUPPER -spr
      
      CLH 0:
         ---------------------------------------------------------------------
         svc_name          svr_name          spr_no       PID        status
         ---------------------------------------------------------------------
         TOUPPER           svr2                  37     16228           BLK
         TOUPPER           svr2                  38     16227           RDY
    • TMS 정보(-t)

      다음은 서비스의 정보를 확인하는 예제이다.

      $$29 tmax8 (tmadm): st -t
      
      CLH 0:
      ------------------------------------------------------------------------------------
      tms_name     svgname    spr_no      status   count    avg   cqcount aqcount qavg
      ------------------------------------------------------------------------------------
      tms_ora      svg2            0       RDY        1    0.004917      0      0     0.000000
      tms_ora      svg2            1       RDY        0    0.000000   (  0)    (  0)     (0.000000)

      다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.

      항목 설명

      tms_name

      TMS명이다.

      svgname

      TMS가 속해 있는 서버 그룹명이다.

      spr_no

      TMS의 프로세스 ID이다.

      status

      TMS의 현재 상태로 자세한 설명은 "시스템 동작 상태"를 참고한다.

      count

      처리한 TMS의 건수이다.

      avg

      TMS의 평균 처리시간이다.

      cqcount

      현재 대기 중인 요청 건수이다.

      aqcount

      잠시라도 대기했던 총 서비스 요청 건수이다.

      qavg

      서비스의 평균 대기시간이다.

      TMS가 Multi Thread TMS일 경우에는 각 Thread의 상태를 조회할 수 있다.

      $$1 tmax1 (tmadm): st -t -x
      CLH 0:
      ------------------------------------------------------------------------------------
      tms_name     svgname    spr_no(tid) status   count    avg   cqcount aqcount qavg
       PID         XID                    xastate
      ------------------------------------------------------------------------------------
      tms_ora_mt   svg2a           3       RUN        0    0.000000      0      0     0.000000
       44040492    000:000:13505         commit
      tms_ora_mt   svg2a           3(  1)  RDY        0%   0.00   (  0)
                   -                       -
      tms_ora_mt   svg2a           3(  2)  RDY        0%   0.00   (  0)
                   -                       -
      tms_ora_mt   svg2a           3(  3)  RDY        0%   0.00   (  0)
                   -                       -
      tms_ora_mt   svg2a           3(  4)  RDY        0%   0.00   (  0)
                   -                       -
      ---------------------------------------------------------------------------------
    • 상세 정보(-x)

      다음은 'st –p' 명령어와 함께 사용된 예제이다.

      $$1 tmax8 (tmadm): st -p -x
      
      CLH 0:
      ---------------------------------------------------------------------------
      svr_name     svgname     spr_no     status      count        avg        svc
                   PID        RBS_TAG   fail_cnt    err_cnt   min_time   max_time
                   utime    umin_time  umax_time      stime  smin_time  smax_time
      ---------------------------------------------------------------------------
      gw1          gw1             32        RDY          0   0.000000         -1
                   10702     00000000          0          0   0.000000   0.000000
                     0.000000   0.000000   0.000000   0.000000   0.000000   0.000000
      svr2         svg1            37        RDY          0   0.000000         -1
                   10700     00000000          0          0   0.000000   0.000000
                     0.000000   0.000000   0.000000   0.000000   0.000000   0.000000
      ---------------------------------------------------------------------------
      TOTAL COUNT = 0
      TOTAL SVCFAIL COUNT = 0
      TOTAL ERROR COUNT = 0
      TOTAL RUNNING COUNT = 0

      다음은 'st –s' 명령어와 함께 사용된 예제이다.

      $$2 tmax8 (tmadm): st -s -x
      
      CLH 0:
      ------------------------------------------------------------------------------------------------
      svc_name                          svr_name    count    q_cnt   aq_cnt    q_avg      avg   status
                                                          fail_cnt  err_cnt           mintime  maxtime
                                                    utime umintime umaxtime    stime smintime smaxtime
      ------------------------------------------------------------------------------------------------
      TOLOWER                           svr2            0        0        0 0.000000   0.000000   RDY
                                                                 0        0          0.000000 0.000000
                                                 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
      TOUPPER                           svr2            0        0        0 0.000000 0.000000      RDY
                                                                 0        0          0.000000 0.000000
                                                 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

      다음은 명령어를 실행하면 조회되는 결과의 항목에 대한 설명이다.

      항목 설명

      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의 최대 소모시간입니다.

    • 조회 결과 sort(–o)

      다음은 '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.000000      -1
      svr1          svg1           36     RDY          6     0.000000      -1
      svr3          svg1           38     RDY          2     0.000000      -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.000000      0          0   0.000000    RDY
      SDLTOUPPER  svr1     5  0.000000      0          0   0.000000    RDY
      FDLTOUPPER  svr3     2  0.000000      0          0   0.000000    RDY
      SDLTOLOWER  svr1     1  0.000000      0          0   0.000000    RDY
      FDLTOLOWER  svr3     0  0.000000      0          0   0.000000    RDY
      TOLOWER     svr2     0  0.000000      0          0   0.000000    RDY
      • 내림 차순으로 sort 할 조건

        조건 설명

        ca

        처리한 건수(count)

        aa

        평균 처리 시간(avg)

        cq

        현재 큐잉 건수(cq_count)

        aq

        평균 큐잉 건수(aq_count)

        qa

        평균 큐잉 시간(q_avg)

        ce

        각 서버별 처리 건수를 기준으로 서버별로 sort

        ae

        각 서버별 평균 처리 시간을 기준으로 서버별로 sort

      • 오름 차순으로 sort 할 조건

        조건 설명

        ca-

        처리한 건수(count)

        aa-

        평균 처리 시간(avg)

        cq-

        현재 큐잉 건수(cq_count)

        aq-

        평균 큐잉 건수(aq_count)

        qa-

        평균 큐잉 시간(q_avg)

        ce-

        각 서버별 처리 건수를 기준으로 서버별로 sort

        ae-

        각 서버별 평균 처리 시간을 기준으로 서버별로 sort

    • 출력 메시지의 라인 수 지정(-n)

      다음은 출력 메시지의 라인 수를 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.000000      -1
      svr1          svg1           36     RDY          6     0.000000      -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.000000      0          0   0.000000    RDY
      SDLTOUPPER  svr1      5  0.000000      0          0   0.000000    RDY
      FDLTOUPPER  svr3      2  0.000000      0          0   0.000000    RDY
    • HMS Destination 정보(-q)

      다음은 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

      해당 Destination에 연결된 클라이언트의 종류이다.

      • SND : 큐 타입의 송신자 (hms_create_sender()로 생성)

      • PUB : Topic 타입의 발행자 (hms_create_publisher()로 생성)

      • RCV : 큐 타입의 수신자 (hms_create_receiver()로 생성)

      • SUB : Topic 타입의 구독자 (hms_create_subscriber()로 생성)

      • DSUB : Topic 타입의 영속적 구독자 (hms_create_durable_subscriber()로 생성)

      • ARCV : Async 세션에서 생성된 큐 타입의 수신자

      • ASUB : Async 세션에서 생성된 Topic 타입의 구독자

      • ADSUB : Async 세션에서 생성된 Topic 타입의 영속적 구독자

      qcnt

      각 구독자들이 실제로 가지고 있는 메시지 건수이다.

      cnt

      각 클라이언트가 전송하거나 수신한 메시지 건수이다.

      f_dscrd

      수신 후 메시지를 failed로 처리하여 실패된 메시지 건수이다.

      t_dscrd

      전송할 때 설정한 TTL(유효시간)이 지나서 실패 처리된 메시지 건수이다.

      listener

      ASYNC 세션으로 생성한 소비자(consumer)의 경우 메시지를 수신할 서비스명이다.

      다음은 TmaxGrid 상세 정보를 조회하는 예제이다.

      $$1 tmax1 (tmadm): st -tg
      TG Info:
          Preferences:
              shmkey               : 38852 (0x97c4)
              shmsize              : 40960 Kbyte
              max data             : 10000
              max watcher          : 10
              id                   : 1
              portno               : 9999 (UDP)
              heartbeat            : 1000 ms
              timeout              : 5000 ms
              historycount         : 100
              standbycount         : 10
              gqmaxbuffersize      : 1000 byte
              gqdownwaittime       : 30
          Status:
              status               : INIT
              suspend status       : NOT SUSPENDED
              created node count   : 0
              deleted node count   : 0
              set data count       : 0
              get data count       : 0
              current node count   : 0
              temporary node count : 0
              watcher count        : 0
              current data count   : 0
              total data size      : 0 byte
              current shm size     : 4460544 byte (10.64%)

4.10. svrinfo(si)

현재 동작 중인 각 서버의 정보를 알려준다.

  • 사용 방법

    $$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)를 초과하여 반환된 건수이다.

    boottime

    서버의 마지막 기동 시각이다. -b 옵션을 사용했을 때 출력된다.

4.11. tmmsinfo(tmmsi)

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

    노드의 상태이다.

    다음은 노드의 상태에 출력되는 값에 대한 설명이다.

    • NRDY(NOT_READY) : 연결이 되어 있지 않거나 연결이 끊어진 상태이다.

    • RDY(READY) : 정상적으로 연결되어 있는 상태이다.

    • REG(REGISTERED) : 노드 간 연결을 진행 중인 상태이다.

    • UNR(UNREGISTERED) : 해당 노드가 tmdown 요청으로 종료되는 상태이다.

    • NSTRT(NCLHSTARTED) : 노드 간 연결을 진행 중인 상태에서 대상 노드의 CLH가 시작된 상태이다.

    • CTNG(TRYINGTOCONNECT) : 노드 간 TCP/IP 소켓만 연결되어 있고 대상 노드로 연결 메시지를 보내지 않은 상태이다.

    • NPING(ALIVECHECK) : 해당 노드가 연결되어 있는 상태에서 alive check를 수행하고 있는 상태이다.

    • NPING2(ALIVECHECK2) : 해당 노드로부터 alive check에 대한 응답이 오지 않는 상태이다.

4.12. txquery(txq)

현재 처리 중인 트랜잭션 정보를 조회한다.

  • 사용 방법

    $$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의 도메인 게이트웨이에 대해 조회한다.

    [-t]

    리모트로부터 시작된 트랜잭션 중 pending으로 인해 commit이나 rollback이 결정되지 않는 xid와 svgno를 조회한다.

    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 처리 상태이다.

    • 트랜잭션 정보 조회(-x)

      다음은 트랜잭션 정보를 조회하는 예제이다.

      $$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
    • 그룹의 트랜잭션 조회(-g)

      다음은 그룹의 트랜잭션을 조회하는 예제이다.

      $$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
    • 트랜잭션 트리 조회(-w)

      다음은 트랜잭션 트리를 조회하는 예제이다.

      $$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

      다음은 [-w], [-r] 옵션을 사용한 예제이다.

      ### 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

4.13. wsgwinfo(wsi)

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

    한 서비스를 처리하기까지 걸린 최장 시간이다.

5. 운용 관리

5.1. admnoti(an)

TCS, UCS, RDP 서버로 이벤트를 전송할 수 있는 기능이다. tmadmin에서 지정된 서버들에게 이벤트를 요청하면, 해당 서버들은 사용자가 지정한 콜백함수를 호출하여 이벤트를 처리한다. 콜백함수가 등록되지 않았다면 이벤트는 무시된다. 명령어는 tmadmin -m 옵션에서만 동작 가능하다.

TCS, UCS, RDP 에서는 tpregancb api 를 이용하여 이벤트 처리 코드를 작성할 수 있다.

  • 사용 방법

    $$1 tmax1 (tmadm): admnoti [-a | -g svgname | -p spri | -P pid] [notification message]
    항목 설명

    [-a]

    모든 서버 프로레스에게 이벤트를 전송한다.

    [-g svgname]

    svgname에 속하는 모든 서버 프로세스에게 이벤트를 전송한다.

    [-v svrname ]

    svrname에 해당하는 모든 서버 프로세스에게 이벤트를 전송한다.(TD: 사용방법에 없는 항목임)

    [-p spri ]

    해당 spri의 서버 프로세스에게 이벤트를 전송한다.

    [-P pid ]

    해당 pid의 서버 프로세스에게 이벤트를 전송한다.

    [notification message]

    콜백함수에 전달할 메시지를 입력한다..

5.2. advertise(adv) / unadvertise(unadv)

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를 등록 해제한다.

  • 예제

    • 특정 서비스 해제(unadvertise -s)

      다음은 상태 정보를 확인한 서비스 중 이름이 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 -s)

      다음 등록 해제한 서비스를 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

5.3. cfgadd(ca)

cfgadd(ca)는 Tmax 운영 중 특정 서버 프로그램에 서비스가 추가될 때에 해당 서버만 다운시킨 후 이 명령을 사용하여 동적으로 서비스를 추가할 수 있다. 서비스 외에도 서버, 서버 그룹, 노드를 운영 중에 동적으로 추가할 수 있다.

Tmax 5부터는 cfl의 –a 옵션을 사용하지 않고 생성한 이진 환경 파일을 동적 추가할 수 없으므로 반드시 -a 옵션을 이용해서 환경 파일을 컴파일해야 한다.

cfgadd(ca)를 사용하여 서비스를 동적으로 추가할 때 제약사항은 cfgadd(ca) 사용하여 동적 추가할 때 제약사항을 참고한다.

  • 사용 방법

    $$1 tmax1 (tmadm) :  cfgadd (ca)  - i cfgfile
    항목 설명

    - i cfgfile

    추가할 서비스의 환경 파일명을 지정한다.

서비스 동적 추가

다음은 서비스 동적 추가에 해당하는 cfgadd(ca) 수행 과정이다. Tmax 6부터 추가할 환경 파일을 생성하지 않고 기존 환경 파일을 수정하는 방식으로 변경되었다.

  1. 환경 파일을 수정한다.

    $vi modify.m
  2. 수정한 환경 파일을 -a 로 컴파일하고, cfl로 –o 옵션을 사용하여 다른 이름의 바이너리 환경 파일을 생성한다.

    $cfl -a modify.m -o tmchg
  3. gst로 서비스 테이블을 생성한다.

    $gst -f tmchg
  4. "tmadmin –m"을 수행하고, cfgadd(ca)를 이용하여 서비스를 추가한다.

    $cfgadd -i tmchg
  5. 해당 서버 프로그램을 컴파일한다.

    $compile c svr1
  6. 해당 서버 프로세스를 기동한다.

    $tmboot –S svr1

서버 동적 추가

다음은 서버 동적 추가에 해당하는 cfgadd(ca) 수행 과정이다.

  1. 새로운 서버 추가하여 환경 파일을 수정(추가)한다.

    <modify.m>

    *SERVER
    기존 항목들
    ........
    hello           SVGNAME = svg1
    *SERVICE
    기존 항목들
    ........
    HELLO           SVRNAME = hello
  2. 환경 파일을 컴파일한다. modify.m은 기존의 환경 파일에서 추가된 항목을 입력해 수정한 파일을 의미한다.

    cfl -a modify.m -o tmchg
  3. 서비스 테이블을 생성한다.

    gst -f tmchg
  4. 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 상태이다.

  5. 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
  6. 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) 수행 과정이다.

  1. 환경 파일을 수정한다.

    <tmconfig_add.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 <- 기존 내용
    svg1            NODENAME = "@HOSTNAME@",COUSIN = "svg2,svg3",LOAD = 2 # <- 수정한 내용
    svg2            NODENAME = "@RMTNAME@",LOAD = 1
    
    *SERVER
    svr2            SVGNAME = svg1
    
    *SERVICE
    TOUPPER         SVRNAME = svr2
    TOLOWER         SVRNAME = svr2
    
    #추가한 내용
    
    *NODE
    @RMTNAME2@      TMAXDIR = "@RMTDIR2@",
                    APPDIR  = "@RMTDIR2@/appbin",
    
    *SVRGROUP
    svg3            NODENAME = "@RMTNAME2@",LOAD = 1
  2. 추가된 새로운 노드에 racd를 기동한다.

    Node3>$ racd -k
  3. 환경 파일을 컴파일한다. 새로운 노드가 추가된 환경 파일 tmconfig_add.m을 컴파일한다. 컴파일할 때 –o 옵션을 사용하여 다른 이름의 이진 환경 파일을 생성한다.

    node1>$cfl -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)
  4. 서버를 컴파일한다. 새로 추가할 노드의 서버를 컴파일한다.

    node3>$ gst -f tmchg
    node3>$ compile c svr2
  5. 동적 노드를 추가한다. 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
  6. 새로 추가된 노드(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
  7. 새로 추가된 노드를 확인한다. 노드가 정상적으로 추가되었는지 확인한다.

    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) 사용하여 동적 추가할 때 제약사항

cfgadd(ca)를 사용하여 서비스, 서버, 서버 그룹, 노드 등을 동적으로 추가할 때 아래와 같은 제약사항이 있다.

  • 각 항목에 대해서 추가만 가능하며 제거는 할 수 없다. 제거를 위해서는 기존 환경 파일에서 항목을 제거하고 cfl을 실행한 다음에 Tmax를 재기동해야만 한다.

  • 기존 환경설정 파일에 존재하는 이름의 항목이 새로 추가하는 환경설정 파일에 중복해서 존재하면 안된다.

  • 새로 추가된 환경설정 파일의 내용을 기존 환경설정 파일에 적용하는 경우에는 반드시 각 절의 마지막에 추가되어야 한다. 추가된 항목을 기존 환경설정의 중간에 넣거나 순서를 변경하면 운영환경의 정보가 비정상적으로 변경될 수 있으므로 반드시 주의해야 한다.

  • MAXNODE, MAXSVG, MAXSVR, MAXSPR, MAXSVC, MAXTMS, MAXCPC 설정 이내에서 항목을 추가할 수 있음을 유의한다. 그리고 해당 항목의 값을 변경해서는 안된다.

  • 서버 그룹을 추가할 때 XA 서버 그룹인 경우에는 TMS를 지정하고, 해당 프로그램이 생성되어 있는지 확인한다.

  • RQ는 동적 추가를 할 수 없다.

  • COUSIN/BACKUP이 있는 서버 그룹을 추가 및 제거할 수 없다.

  • COUSIN/BACKUP이 있는 게이트웨이를 추가 및 제거할 수 없다.

  • COUSIN/BACKUP이 있는 서버 그룹에 동적으로 추가된 서비스를 제거할 수 없다.

  • 한번에 동적 추가 할 수 있는 갯수 제한은 메모리가 허용하는 범위 안이다.

  • 서비스, 서버, 서버 그룹, 노드를 추가할 때 cfl을 이용해 동적추가를 위한 이진 환경 파일을 생성해야 한다.

    cfl의 –a 옵션을 사용하지 않고 만든 이진 환경 파일을 동적 추가하면 다음과 같은 에러 메시지가 출력된다.

    (E) TMAX00157 Engine type mismatch (0): 'a' option must be used [ADM0417]

5.4. chtrc

TMAX_TRACE는 Runtime tracing facility로 Tmax 애플리케이션의 실행에 대한 Runtime tracing이 이루어질 수 있도록 하는 기능이다. 이 기능은 환경변수 TMAX_TRACE를 설정하여 사용할 수 있으며, 시스템 운영 중에 동적으로 설정을 변경하고자 하는 경우에는 tmadmin의 chtrc 명령어를 사용할 수 있다.

  • 사용 방법

    chtrc [-g svgname | -v svrname | -g svgname -v svrname |
           -i spri | -g svgname -i spri | -e gqs] -s newspec
    항목 설명

    [-g svgname]

    서버 그룹의 스펙을 변경하는 경우 설정한다.

    [-v server]

    서버의 스펙을 변경하는 경우 설정한다.

    [-g svgname -v server]

    서버 그룹의 해당 서버 스펙을 변경하는 경우 설정한다.

    [-i spri]

    서버 프로세스의 스펙을 변경하는 경우 설정한다.

    [-g svgname -i spri]

    서버 그룹의 해당 서버 프로세스의 스펙을 변경하는 경우 설정한다.

    [-e gqs]

    gqs의 스펙을 변경하는 경우 설정한다.

    -s newspec

    변경할 스펙을 지정한다.

  • 사용예제

    • 서버 스펙 변경(-s)

      다음은 단일 노드에서 특정 노드에 속하는 모든 서버의 스펙을 변경하는 예제이다.

      $$1 tmaxs1 (tmadm): chtrc -s newspec

      다음은 멀티 노드 환경에서 특정 노드에만 새로운 TRACE 스펙을 적용하는 예제이다.

      $$1 tmaxh3 (tmadm): nodeset $HOSTNAME
      node is set to $HOSTNAME
      $$2 tmaxh3 (tmadm): chtrc –s newspec
    • 서버 그룹 스펙 변경(-g)

      다음은 특정 서버 그룹에 속하는 모든 서버의 스펙을 변경하는 예제이다.

      $$1 tmaxs1 (tmadm): chtrc -g svgname -s newspec
    • 서버의 스펙 변경(-v)

      다음은 특정 서버 그룹에 속한 서버들을의 스펙을 변경하는 예제이다.

      $$1 tmaxs1 (tmadm): chtrc -g svgname -s newspec

      다음은 특정 서버 그룹의 서버의 스펙을 변경하는 예제이다.

      $$3 tmaxs1 (tmadm): chtrc -g svgname -v server -s newspec
    • 서버 프로세스의 스펙 변경 (-i)

      특정 서버 프로세스의 스펙을 변경하는 예제이다.

      $$4 tmaxs1 (tmadm): chtrc -g svgname -i sprno -s newspec

5.5. chlog

특정 에러 상황에 보다 신속하게 대응하기 위하여 tmadmin의 chlog 명령어를 이용하여 런타임 도중에 로그 레벨을 동적으로 변경할 수 있다. 로그 레벨 변경 기능을 사용하여 로그를 확인하기 위해서는 반드시 해당 모듈을 디버그 모드로 사용해야 한다. tmadmin의 cfg 명령어를 통하여 로그 레벨이 실제로 변경되었는지 확인할 수 있다.

  • 사용 방법

    $$1 tmaxs1 (tmadm) : chlog [-t | -c | -v [server_name] |
                 -g [servergroup_name]| -m] -l [loglvl]
    항목 설명

    [-t]

    TMM의 로그 레벨을 설정한다.

    [-c]

    CLH의 로그 레벨을 설정한다.

    [-v [server_name]]

    지정된 서버에 대한 로그 레벨을 설정한다.

    [-g [servergroup_name]]

    지정된 서버 그룹에 대한 로그 레벨을 설정한다.

    [-m]

    TMS에 대한 로그 레벨을 설정한다.

    -l [loglvl]

    다음 중에 하나를 선택해서 실제 로그 레벨을 설정한다(순서대로 설정할수록 더 자세한 로그 확인이 가능하다).

    • COMPACT

    • BASIC

    • DETAIL

    • DEBUG1

    • DEBUG2

    • DEBUG3

    • DEBUG4

  • 예제

    • TMM의 동적 로그 레벨 변경(-t)

      다음은 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의 동적 로그 레벨 변경(-c)

      다음은 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의 동적 로그 레벨 변경(-m, -g)

      다음은 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,
      ...
    • 특정 서버 그룹의 동적 로그 레벨 변경(-g)

      다음은 특정 서버 그룹의 동적 로그 레벨를 변경하는 예제이다.

      $$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
      ...

5.6. chlog2

특정 에러 상황에 보다 신속하게 대응하기 위하여 tmadmin의 chlog2 명령어를 이용하여 런타임 도중에 로그 레벨을 동적으로 변경할 수 있다. 런타임 중 로그 레벨 변경할 수 있는 기능인 tmadmin의 chlog에서 누락된 구성요소인 TLM, CAS, CLL, RS, SQ, HMS, RQS, GATEWAY에 대해서도 런타임 중 로그 레벨을 변경하고 설정할 수 있는 기능이다(기존 chlog 기능을 모두 포함한다). tmadmin의 cfg 명령어를 통하여 로그 레벨이 실제로 변경되었는지 확인할 수 있다.

  • 사용 방법

    $$1 tmaxs1 (tmadm) : chlog2 -t [type_name] [-n name] -l [loglvl]
    항목 설명

    -t [type_name]

    로그 레벨을 변경할 모듈을 설정한다.

    • TMM : TMM

    • CLH : CLH

    • TLM : TLM

    • CAS : CAS

    • RS : Real Server

    • SQ : Session Queue Server

    • TG : Tmax Grid Server

    • TMS : TMS

    • HMS : HMS

    • RQ : Reliable Queue Server

    • GW : GATEWAY

    • SVG : Server의 Server Group

    • SVR : Server

    • CLL : CLL

    [-n name]

    TMS, HMS, RQ는 설정한 서버 그룹 이름, GW는 Gateway 이름, SVG는 서버 그룹 이름, SVR은 서버 이름이다. 나머지는 이름이 필요 없다.

    • TMM : TMM

    • CLH : CLH

    • TLM : TLM

    • CAS : CAS

    • RS : Real Server

    • SQ : Session Queue Server

    • TG : Tmax Grid Server

    • TMS : TMS

    • HMS : HMS

    • RQ : Reliable Queue Server

    • GW : GATEWAY

    • SVG : Server의 Server Group

    • SVR : Server

    • CLL : CLL

    -l [loglvl]

    다음 중에 하나를 선택해서 실제 로그 레벨을 설정한다(순서대로 설정할수록 더 자세한 로그 확인이 가능하다).

    • COMPACT

    • BASIC

    • DETAIL

    • DEBUG1

    • DEBUG2

    • DEBUG3

    • DEBUG4

  • 예제

    • TMM의 동적 로그 레벨 변경

      다음은 TMM의 로그 레벨를 변경하는 예제이다.

      tmaxh2:/data1/starbj81/tmax/config> tmadmin -l -m
      --- Welcome to Tmax Admin (Type "quit" to leave) ---
      
      $$1 tmaxh2 (tmadm): chlog2 -t TMM -l DEBUG4
      log level is updated
      $3 tmaxh2 (tmadm): cfg -n
          node_name = tmaxh2, hostname = tmaxh2, node_no = 1
      ...
          tmmloglvl = DEBUG4,
      ...
    • CLH의 동적 로그 레벨 변경

      다음은 CLH의 동적 로그 레벨를 변경하는 예제이다.

      tmaxh2:/data1/starbj81/tmax/config> tmadmin -m -l
      --- Welcome to Tmax Admin (Type "quit" to leave) ---
      
      $$1 tmaxh2 (tmadm): chlog2 -t CLH -l COMPACT
      log level is updated
      $$2 tmaxh2 (tmadm): cfg -n
          node_name = tmaxh2, hostname = tmaxh2, node_no = 1
          tmmloglvl = DEBUG4,
          clhloglvl = COMPACT,
      ...

5.7. cleandynsvc(cleands)

mksvr로 빌드된 서버가 비정상 종료로 재기동되는 경우에는 동적 등록된 서비스를 삭제하지 않는다. 서버 비정상 종료로 재기동하려 했으나 실패하는 경우 서비스 삭제가 안되어 있는데, 추후 mksvr로 기동될 때 동적 등록하려는 서비스 목록이 변경된 경우 문제의 소지가 있으므로, 이 경우 tmadmin을 통해 서비스 목록을 정리할 수 있어야 한다. 서버 프로세스 개수가 0개인 서버에 속하는 동적 등록된 서비스들을 삭제하는 기능이다.

  • 사용 방법

    $$1 tmax1 (tmadm): cleands [-s [service_name]]
    항목 설명

    [-s [service_name]]

    삭제할 서비스 명을 지정한다.

  • 예제

    다음은 사용한 예제이다.

    $$2 tmaxc1 (tmadm): cleands
    
    $$2 tmaxc1 (tmadm): cleands -s TOUPPER

5.8. discon(ds)

현재 접속되어 있으나 아무 일도 수행하지 않는 클라이언트를 강제로 연결을 해제한다. 클라이언트 정보를 얻을 수 있는 ci 명령어로 확인한 후 사용한다. discon 명령어의 약어는 ds이며, 다음과 같은 옵션들이 제공된다.

  • 사용 방법

    $$1 tmax1 (tmadm): ds [-h clhno] [-f] {-a | -n | -i idle_time | -c clid | -A | -d clid}
    항목 설명

    [-h clhno]

    해당 CLH에 연결된 클라이언트 접속을 해제한다.

    [-f]

    클라이언트와의 접속을 즉시 해제하는 옵션이다.

    {-a}

    해당 CLH에 접속되어 있는 모든 클라이언트의 접속을 해제한다.

    [-h] 옵션이 적용되어 있지 않을 경우 기본값으로 0번 CLH에 접속되어 있는 클라이언트의 연결이 해제된다.

    {-n}

    정확한 정보가 없는 클라이언트와의 연결을 해제한다.

    "tpalloc"로 할당된 버퍼는 사용하지 않는다.

    {-i idle_time}

    지정된 시간(초 단위)을 초과한 세션의 클라이언트와의 접속을 해제한다.

    {-c clid}

    클라이언트에게 부여한 ID 번호로 접속을 해제한다. ID 번호는 반드시 설정해야 한다.

    {-A}

    모든 CLH에 접속되어 있는 클라이언트와의 접속을 해제한다.

    {-d clid}

    해당 clid를 가진 클라이언트와의 연결을 해제한다.

5.9. logstart(logs) / logend(loge)

관리자는 tmadmin을 사용하여 여러 가지 실시간 정보를 조회할 수 있다. 주어진 상황에 맞는 즉각적이고 효과적인 조치를 취할 수 있다. tmadmin은 통계적 정보 분석을 위해 관리자 데이터를 로그로 남길 수 있다. 로깅 파일은 현재 디렉터리에 만들어진다. 로그 데이터를 통해 업무 폭주 시간, 불필요한 서버 프로세스, 큐잉 상태 등을 확인하여 전반적인 시스템 분석이 가능하다.

logstart 명령어를 통해서 로그 처리를 시작할 수 있으며 logend 명령어를 통해 종료한다.

  • 사용 방법

    • 로그 처리시작(logstart)

      $$1 tmax1 (tmadm): logstart filename
      항목 설명

      filename

      로그 파일명을 설정한다.

    • 로그 처리 종료(logend)

      $$1 tmax1 (tmadm): logend

5.10. notify_reconnect_clh(nrc)

Tmax를 운영중에 특정 서버 프로세스가 특정 CLH에 연결을 맺지 못하는 상황이 발생할 수 있다. 이 경우 자동으로 연결을 못 맺을 경우 수동으로 특정 서버 프로세스에 특정 CLH 연결을 맺도록 해주는 명령어이다.

  • 사용 방법

    $$1 tmax1 (tmadm): notify_reconnect_clh clh_index spr_index
    항목 설명

    clh_index

    연결을 원하는 원하는 clh 번호를 입력한다.

    spr_index

    연결을 원하는 원하는 spr 번호를 입력한다.

    tmadmin에서 st -p로 설정하는 경우 출력하는 spri 이다.

5.11. qpurge(qp)

업무의 폭주 현상이 발생하여 많은 업무가 쌓여 정상적으로 거래를 처리하지 못하는 경우 현재 큐에 누적되어 있는 서비스 요청을 삭제하는 기능이다. 하루에도 수십 만 건의 업무를 처리하는 은행이나 관공서에서 유용하게 사용될 수 있는 기능이다.

삭제된 업무는 클라이언트의 재요청을 통해 다시 처리될 수 있다. 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]

    서버의 큐에 쌓인 요청 중 일부를 purge시킬 수 있는 기능이다. 반드시 [–v] 옵션과 함께 사용해야 한다.

    number 값이 0보다 큰 수 N이면 처음 들어온 N개의 서비스 요청만 남기고 이후에 들어온 요청을 purge시킨다.

    • -1 : 현재 큐에 대기 중인 서비스 요청 중에서 MAXQCOUNT 개수만큼의 요청만 남기고 이후에 들어온 요청들을 purge시킨다.

    • 0 : 현재 큐에 대기 중인 모든 서비스 요청들을 purge시킨다.

    {-s svc_name}

    큐에 쌓여있는 특정 서비스에 대한 요청을 삭제한다.

5.12. rebootsvr(rbs)

rbs(Reboot Server Process)는 현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경한다.

TMAX_BKAPPDIR를 '.profile’의 환경변수에 지정하고 새로운 프로그램의 실행 파일로 지정한다. 예를 들어 $TMAXDIR/bk_appbin에 옮기고 다음의 명령어를 수행한다.

  • 사용 방법

    $$1 tmax1 (tmadm): rbs [-o] new_file old_file
    항목 설명

    [-o]

    old_file에 해당하는 서버프로세스들을 전부 종료시킨 후 new_flie에 해당하는 서버 프로세스들로 모두 재기동시킨다.

    new_file

    새 파일명을 지정한다.

    old_file

    사용 중인 파일명을 지정한다.

rbs 수행 과정

다음은 rebootsvr(rbs) 수행 과정이다.

  1. .profile에 아래와 같이 환경변수를 추가한다.

    export TMAX_BKAPPDIR=/data2/starbj81/tmax64/bk_appbin
  2. 환경변수에 설정해준 것과 동일한 위치에 bk_appbin 디렉터리를 생성한다.

    $mkdir bk_appbin
  3. appbin 디렉터리에 있는 실행 파일을 bk_appbin 디렉터리로 복사한다.

    $cp appbin/svr2 bk_appbin/
  4. tmadmin -m을 실행한 후 rbs를 실행한다.

    • 서버가 MIN=1 && MAX=1이거나 기동되어 있지 않을 경우 서버 교체 과정에서 suspend와 resume이 이루어진다.

      현재 MIN=1, MAX=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
    • 그 이외의 경우 서버 프로세스를 순차적으로 종료/기동시키며 교체를 시킨다.

      현재 MIN=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
  5. 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가 수행된다.

  1. svr1 1을 종료한다.

  2. bk_appbin 디렉터리에 임시파일(_rbs00_svr1)을 복사한다.

  3. _rbs00_svr1이 기동한다.

  4. svr1 2를 종료한다 .

  5. bk_appbin 디렉터리에 임시파일(_rbs00_svr1)을 복사한다.

  6. _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 대상의 서버가 속한 서버 그룹이다.

  • 예제

    • 서버의 특정 서비스 변경(-s)

      다음은 해당 서버의 특정 서비스만 변경하는 경우로 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
    • 서버의 전체 서비스 변경 (-S)

      다음은 해당 서버의 전체 서비스를 변경하는 경우로 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): mrebootsvr(mrbs) [-S | -s svc_name,...] newfile svr_name
    항목 설명

    [-S]

    해당 서버의 전체 서비스를 suspend한다.

    [-s svc_name ]

    해당 서버의 하나의 서비스를 suspend한다.

    newfile

    새 파일명을 지정한다.

    svr_name

    suspend 대상의 서버명이다.

  • 예제

    • 서버의 특정 서비스 변경(-s)

      다음은 해당 서버의 특정 서비스만 변경하는 경우로 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
    • 서버의 전체 서비스 변경(-S)

      다음은 해당 서버의 전체 서비스를 변경하는 경우로 svr2 서버의 모든 서비스가 일시적으로 중단될 수 있다.

      $$1 tmax1 (tmadm): mrbs -S svr2_new svr2

한 노드의 COUSIN 그룹에 속한 서버에 대한 rbs

한 노드에 2개 이상의 서버 그룹이 COUSIN으로 설정된 경우 COUSIN 서버 그룹에 속한 모든 서버에 대하여 rbs(서버 교체)가 가능하다.

5.13. reconnect_clh(rc)

CLH와 다른 노드의 재연결을 시도한다. 연결 상태에 따라 끊어진 연결만 시도하는 경우와 모든 연결을 재연결하는 방식 두 가지 모두 가능한다.

  • 사용 방법

    $$1 tmax1 (tmadm): rc nodename [-a]
    항목 설명

    nodename

    다시 연결할 노드 이름을 설정한다.

    [-a]

    모든 연결을 다시 연결한다.

  • 예제

    다음은 사용한 예제이다.

    $$2 tmaxc1 (tmadm): rc node2
    
    $$2 tmaxc1 (tmadm): rc node3 -a

5.14. reopen_db

서버 그룹에 속한 모든 TMS 및 서버 프로세스들이 데이터베이스에 재연결한다.

  • 사용 방법

    $$1 tmax1 (tmadm): reopen_db svgname
    항목 설명

    svgname

    데이터베이스에 재연결할 서버 그룹을 설정한다.

  • 예제

    $$1 tmax1 (tmadm): reopen_db svg_ora

해당 명령어를 사용하기 위해서는 tmadmin -m 옵션을 사용하여 마스터 모드로 동작하도록 해야 한다.

5.15. restat

특정 서버 프로세스 또는 모든 서버 프로세스의 통계 정보를 초기화하는 명령어로 마스터 모드로 사용할 때만 가능하다.

  • 사용 방법

    $$1 tmax1 (tmadm): restat [[-v [server_process_name]] | [-a]] [-r]
    항목 설명

    [-v [server_process_name]]

    지정된 서버 프로세스의 통계 정보를 초기화한다.

    [-a]

    모든 서버 프로세스의 통계 정보를 초기화한다.

    [-r]

    [-v], [-a]와 같이 사용되어 해당 서버 프로세스의 restart 횟수를 초기화한다.

5.16. restart(rst)

restart 명령어는 현재 기동되어 있는 서버 프로세스를 다운시킨 후 MIN 개수만큼 재기동시키는 명령어이다.

  • 사용 방법

    $$1 tmax1 (tmadm): restart [-v [server_name]] [-g [servergroup_name]]
    항목 설명

    [-v [server_name]]

    적용한 서버를 재기동한다.

    [-g [servergroup_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

5.17. resume(rs)

동작이 중지된 서버 프로세스의 활동을 재개한다. 활동이 재개된 서버 프로세스는 큐에 대기 중이던 서비스를 처리하기 시작하며 요청되는 서비스에 대해 처리 가능한 상태가 된다. resume 명령어의 약어는 rs이다.

  • 사용 방법

    $$1 tmax1 (tmadm): resume {-s svc_name [-p pid | -i spri] |
                               -v svr_name [-k count]}
    항목 설명

    -s svc_name

    서비스의 스케줄링을 재개하는 옵션이다.

    [-p pid]

    서비스를 서버 프로세스별로 재개한다. 서비스를 서버 프로세스별로 suspend/resume할 때 suspend를 수행할 경우 관련 서비스가 수행 중이면 수행이 완료된 후에 suspend가 진행되므로 시간이 오래 걸릴 수 있다. 이 경우 tmadmin을 강제 종료시키면 해당 서비스가 재개된다.

    suspend 이후 해당 서비스에 대한 요청은 큐에 쌓이게 된다. [-s] 옵션과 함께 사용된다.

    • 사용 방법

      resume(rs) -s svc_name [-p pid]

    [-i spri ]

    서비스를 spri별로 재개한다. 서비스를 spri별로 suspend/resume할 때 suspend를 수행할 경우 관련 서비스가 수행 중이면 수행이 완료된 후에 suspend가 진행되므로 시간이 오래 걸릴 수 있다. 이 경우 tmadmin을 강제 종료시키면 해당 서비스가 재개된다.

    suspend 이후 해당 서비스에 대한 요청은 큐에 쌓이게 된다. [-s] 옵션과 함께 사용된다.

    • 사용 방법

      resume(rs) -s svc_name [-i spri]

    -v svr_name

    서버 프로세스의 스케줄링을 재개하는 옵션이다.

    [-k count]

    대상 서버 중 일부 프로세스들을 resume하는 옵션이다.

    [-v] 옵션과 함께 사용된다. 옵션으로 지정한 개수만큼 suspend된 서버 프로세스를 resume시키며, 이미 모든 서버 프로세스가 suspend 상태가 아니라면 명령은 취소된다. 옵션 설정값은 해당 서버의 MAX를 초과할 수 없다.

    서버 프로세스별로 suspend 상태를 확인하려면 stat -p -X 명령을 실행한다.

    • 사용 방법

      resume(rs) -v svr_name [-k 5]

    -k 옵션을 사용하여 서버 프로세스가 하나라도 resume되면 서버의 상태는 RDY로 바뀌게 된다. 만약 기동되어 있는 프로세스가 없다면 NRDY 상태가 된다.

다음은 resume과 관련된 설명이다.

  • 한 노드의 COUSIN 그룹에 속한 서버에 대한 suspend/resume

    한 노드에 2개 이상의 서버 그룹이 COUSIN으로 설정된 경우 COUSIN 서버 그룹에 속한 모든 서버에 대하여 suspend/resume이 적용된다.

ASQCOUNT은 SVRGROUP 절에서 설정을 하며, 서버 프로세스를 BLK으로 설정하기 위해선 [-v] 옵션을 사용해야 한다.

5.18. set

현재 설정되어 있는 환경 파일의 설정값을 동적으로 변경할 수 있는 명령어이다.

변경 가능한 항목은 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
    $$1 tmax1 (tmadm): set -v svr2 maxsvr 10 (max(svr2)의 경우 기존 값 보다 작은 값만 변경 가능)
    $$1 tmax1 (tmadm): set -d dom1 portno 9999
    $$1 tmax1 (tmadm): set -g svg2 maxrstart 10
    $$1 tmax1 (tmadm): set -v svr140_A restart N
    $$1 tmax1 (tmadm): set -v gw1 schedule FA
    $$1 tmax1 (tmadm):  set -d dom nclhchktime 10

5.19. setopt

TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 환경설정 값을 동적으로 변경할 수 있는 명령어이다. 변경 가능한 항목은 tmadmin에서 cfgopt 명령어를 통해서 확인할 수 있다. cfgopt에서 출력되는 항목이 동적으로 변경 가능한 항목이다.

  • 사용 방법

    $$1 tmax1 (tmadm): setopt [-tmm] [-gw]  항목  값
    항목 설명

    [-tmm]

    TMMOPT 환경설정에 정의된 옵션의 값을 변경하려는 경우에 설정한다.

    [-gw]

    GATEWAY 절 CLOPT 환경설정에 정의된 옵션의 값을 변경하려는 경우에 설정한다.

    항목

    변경할 항목을 설정한다.

    cfgopt에서 출력되는 항목의 옵션을 설정한다. (예: -F)

    변경할 값을 설정한다.

  • 예제

    다음은 명령어 사용 예제이다.

    $$1 tmax1 (tmadm): setopt -tmm -F 30
    new value (30) is set for section = -tmm, name = N/A, fld = -F
    $$2 tmax1 (tmadm): setopt -tmm -t 15
    new value (15) is set for section = -tmm, name = N/A, fld = -t
    $$3 tmax1 (tmadm): setopt -tmm -R 5
    new value (5) is set for section = -tmm, name = N/A, fld = -R
    $$4 tmax1 (tmadm): setopt -tmm -D 1
    new value (1) is set for section = -tmm, name = N/A, fld = -D

5.20. suspend(sp)

응용 서버 프로그램 에러 등으로 더 이상의 업무 처리가 불가능한 경우 이를 해결하기 위해 동작 중인 서버 프로세스를 중지시키는 경우 사용하는 기능이다. 명령어가 실행되면 중지된 서버 프로세스가 현재 처리 중인 서비스를 정상 완료한 후 동작을 중지하고, 큐에 있는 서비스는 대기 상태가 된다. 계속적으로 요청되는 서비스는 모두 큐에 쌓인다. suspend 명령어의 약어는 sp이다.

  • 사용 방법

    $$1 tmax1 (tmadm): Usage: suspend {-s svc_name [-p pid | -i spri] [-a]
                          [-n T|P] [-N T|P] | -v svr_name [-k num] [-a]
                          [-q] [-n T|P] [-N T|P]}
    항목 설명

    -s svc_name

    서비스명이다. 블록된 서비스에 의해서는 asqcount가 증가하지 않는다.

    또한 이 정보는 해당 서버가 종료된 후 재기동되어도 유지된다.

    [-p pid]

    서비스를 서버 프로세스별로 suspend하는 옵션으로 [-s] 옵션과 함께 사용된다.

    [-i spri]

    서비스를 spri별로 suspend하는 옵션으로 [-s] 옵션과 함께 사용된다.

    [-n T|P]

    정상 종료 후 재기동되었을 때 state를 결정한다.

    • T : RDY로 기동된다.

    • P : 비정상 종료 직전 상태로 기동된다.

    [-N T|P]

    비정상 종료 후 재기동되었을 때 state를 결정한다.

    • T : RDY로 기동된다.

    • P : 비정상 종료 직전 상태로 기동된다.

    -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] 옵션과 함께 사용된다.

    [-q]

    asqcount에 의해 서버가 추가 기동되도록 한다. [-v] 옵션과 함께 사용된다.

5.21. txcommit/txrollback

트랜잭션 처리 중 TMS 장애 또는 네트워크 장애로 인하여 일정 시간 트랜잭션이 처리되지 않을 경우 관리자가 commit/rollback을 재이슈하여 해당 트랜잭션을 종료하는 기능이다. txcommit의 경우는 PHASE 2단계에서 Decision이 commit일 경우에만 사용 가능하며 txrollback의 경우는 PHASE 1단계 또는 PHASE에서 Decision이 rollback일 경우에만 사용 가능하다.

  • 사용 방법

    $$1 tmax1 (tmadm): txrollback(txr) | txcommit(txc) [-w] [-y] [-t]
                       <upper-global-xid><lower-global-xid>
    항목 설명

    [-w]

    도메인 서브 트랜잭션일 경우 사용한다.

    [-y]

    txcommit/txrollback의 확인 과정을 거치지 않는다.

    [-t]

    리모트로부터 시작된 트랜잭션일 경우 사용한다.

    upper-global-xid

    처리할 xid의 gtid의 앞의 4Bytes이다.

    lower-global-xid

    처리할 xid의 gtid의 뒤의 4Bytes이다.

txcommit / txrollback은 txquery에서 조회된 트랜잭션에 대한 재처리 도구이며, 재이슈 후 처리 결과를 다시 txquery를 통해서 확인해야 한다.

5.22. wsgwreload(wsrld)

Tmax를 운영 중에 서비스 정보 설정을 변경하거나 웹 서비스 게이트웨이 설정을 변경할 상황이 생길 수 있다. 이런 경우 Tmax 시스템은 tmadmin의 wsgwreload 명령어를 실행하여 적용한다. 명령어가 실행되면 웹 서비스 게이트웨이는 새롭게 요청되는 서비스에는 응답하지 않으며 이미 처리 중인 서비스만 처리한 후 설정을 적용하고 서비스를 처리하기 시작한다.

  • 사용 방법

    $$1 tmax1 (tmadm): wsgwreload [-i svrid [svrid]]
    항목 설명

    [-i svrid [ svrid]]

    적용한 svrid 리스트를 입력한다.

6. 기타

6.1. history(hist)

셸에서와 같이 명령어를 기억하여 편리하게 사용할 수 있다.

  • 사용 방법

    $$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