제5장 관리 도구

내용 목차

5.1. 개요
5.2. tmadmin
5.3. 환경 정보 조회
5.3.1. tmaxinfo(ti)
5.3.2. history
5.3.3. config(cfg)
5.3.4. configopt(cfgopt)
5.4. 동작 상태 정보
5.4.1. stat(st)
5.4.2. gwinfo
5.4.3. txgwinfo / nontxgwinfo
5.4.4. jgwinfo / ajgwinfo
5.4.5. wsgwinfo
5.4.6. smtrc
5.4.7. clhsinfo
5.4.8. tmmsinfo
5.4.9. repeat(r)
5.4.10. clientinfo(ci)
5.4.11. svrinfo(si)
5.4.12. txquery(txq)
5.4.13. rqstat(rqs)
5.5. 운용 관리
5.5.1. suspend(sp)
5.5.2. resume(rs)
5.5.3. advertise/unadvertise
5.5.4. restat
5.5.5. rebootsvr(rbs)
5.5.6. cfgadd(ca)
5.5.7. set
5.5.8. setopt
5.5.9. qpurge(qp)
5.5.10. discon(ds)
5.5.11. logstart / logend
5.5.12. chtrc
5.5.13. chlog
5.5.14. txcommit / txrollback
5.5.15. wsgwreload
5.5.16. restart
5.5.17. notify_reconnect_clh

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

5.1. 개요

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

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

5.2. tmadmin

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

  • 사용방법

    $ tmadmin [-ㅣ] [-s|m] [-h] [-f [config_file]] 
              [-n [node_name]] [-v] [-V]  [-p] [-t]
    옵션설명
    [-l]racd를 통해 여러 노드로 구성된 시스템이 중앙에서 집중 관리될 경우에 로컬 노드만을 관리하기 위해서 사용하는 옵션이다. 각각의 노드들은 이 옵션으로 자신의 시스템만을 관리할 수 있다.
    [-s]읽기 전용 모드로 각각의 tmadmin 툴을 10개까지 사용할 수 있는 옵션이다. 이 옵션을 사용하면 환경을 동적으로 변경시킬 수 없다. (기본값)
    [-m]마스터 모드로 동적으로 환경을 변경할 수 있다. 1명의 사용자만이 마스터 모드를 사용할 것을 권장한다. 1명 이상의 사용자가 환경을 변경할 경우 심각한 시스템 문제가 발생할 수 있다. 환경 파일은 변경하지 않고 정해진 매뉴얼을 따른다.
    [-h]명령어 도움말 옵션이다.
    [-f [config_file]]지정해 준 이진 파일을 관리한다. 환경 파일을 기본값인 tmconfig가 아닌 다른 이름으로 이진 파일을 생성한 경우 tmadmin을 구동할 때 이진 파일명을 지정한다.
    [-n [node_name]]특정 노드에 대한 모니터링이 가능하도록 한다. 멀티 노드 환경에서 tmadmin을 구동하는 경우 이 옵션을 설정하면 지정된 노드에 대한 정보만을 확인하므로 보다 편리하게 시스템을 관리할 수 있다.
    [-v]Tmax의 버전을 확인한다. 이 옵션을 설정하면 Tmax 기동과 상관없이 어느 위치에서나 버전 확인이 가능하다.
    [ -V ]실행 파일의 버전을 확인할 수 있다.
    [-p]st –p, st –s, si, ci, cfg의 명령어가 수행될 때 결과가 화면 단위로 출력되도록 하는 옵션이다(more 기능).
    [-t]명령어 수행에 대한 시작 및 종료시간을 출력한다. 옵션에 대한 자세한 내용은 아래 설명을 참고한다.

    -t 옵션을 주고 tmadmin을 실행하면 다음과 같은 형식으로 시간을 출력한다.

    [TIME][타입   ] : hh:MM:ss:millisec
    타입설명
    START콘솔에서 명령어를 실행할 때 시작시간을 출력한다.
    END콘솔에서 명령어 실행이 종료되면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다).
    R_END콘솔에서 명령어 실행 시 리모트 노드의 수행이 종료되면 종료한 시간(tmadmin을 실행한 로컬의 시간으로, 리모트 노드의 시간이 아니다)을 출력한다.
    RP_STARTtmadmin의 repeat 명령어를 사용하여 수행할 경우 한 건의 명령을 시작하기 전 시간을 출력한다.
    RP_ENDtmadmin의 repeat 명령어를 사용하여 수행할 경우 한 건의 명령이 종료되면 종료시간을 출력한다(리모트 노드의 명령까지 수행한 이후의 시간이다).

명령어 실행

tmadmin에서는 명령어를 통해 Tmax 시스템을 기동 또는 종료시킬 수 있으며, 현재 동작 중인 시스템의 환경설정 내용을 조회 및 수정할 수 있다. 또한 각 서버 프로세스의 상태와 서비스의 처리 상태 등을 확인할 수 있다.

tmadmin 프로그램은 다음과 같이 실행한다.

$tmadmin

아래와 같은 메시지와 함께 프롬프트(prompt)가 나타난다. 이것은 tmadmin 프로그램이 실행 상태임을 나타낸다.

--- Welcome to Tmax Admin (Type "quit" to leave) ---
$$1 tmax1 (tmadm):

tmadmin을 종료하기 위해서는 'quit'이나 'q' 명령을 사용한다.

$$1 tmax1 (tmadm):quit

다음은 tmadmin을 실행한 후 사용할 수 있는 명령어 목록이다.

  • 환경 정보 조회

    명령어설명
    tmaxinfo(ti)Tmax 시스템 정보를 확인한다.
    history(hist)이전에 저장된 명령어를 조회한다.
    config(cfg)환경설정 내용을 조회한다.
    configopt(cfgopt)TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 설정의 현재 설정값을 조회한다.
  • 동작상태 정보 조회

    명령어설명
    stat(st)프로세스 및 서비스 상태의 통계를 낸다.
    gwinfoGATEWAY 절에 정의한 게이트웨이들의 채널 상태를 확인한다.
    txgwinfo(txgwi)Tmax 게이트웨이의 정보를 확인한다.
    nontxgwinfoTmax Non 트랜잭션 게이트웨이의 정보를 확인한다.
    jgwinfoJEUS 게이트웨이의 정보를 확인한다.
    ajgwinfoJEUS Async 게이트웨이의 정보를 확인한다.
    wsgwinfo웹 서비스 게이트웨이의 정보를 확인한다.
    smtrcGID를 이용하여 해당 서비스의 수행 상태를 조회한다.
    clhsinfo멀티 노드 환경에서 CLH 사이의 연결 상태 정보를 확인한다.
    tmmsinfo멀티 노드 환경에서 TMM 사이의 연결 상태 정보를 확인한다.
    repeat(r)명령어를 반복한다.
    clientinfo(ci)접속 클라이언트를 확인한다.
    svrinfo(si)서버 정보를 확인한다.
    txquery(txq)트랜잭션 처리 정보를 확인한다.
    rqstat(rqs)RQ의 상태를 확인하거나 디스크 큐에 쌓여있는 서비스를 처리한다.
  • 운용 관리

    명령어설명
    suspend(sp)동작 중인 서버 프로세스를 중지한다.
    resume(rs)중지된 서버 프로세스를 재개한다.
    advertise/unadvertise특정 서비스명을 advertise / unadvertise한다.
    restat특정 서버 프로세스 혹은 모든 서버 프로세스의 통계정보를 초기화한다.
    rebootsvr(rbs)서버 프로그램을 교체한다.
    cfgadd(ca)동적으로 서비스를 추가한다.
    set현재 설정된 환경설정값을 동적으로 변경한다.
    setoptTMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 환경설정값을 동적으로 변경한다.
    qpurge(qp)큐에 쌓인 업무를 삭제한다.
    discon(ds)접속 중인 클라이언트를 강제로 해제한다.
    logstart / logend로깅을 시작 / 종료한다.
    chtrcTrace 관리를 한다.
    chlogTMM, CLH, 특정 서버의 로그 레벨을 런타임 도중 동적으로 변경한다.
    txcommit / txrollback트랜잭션 처리 중에 장애가 발생하는 경우 Commit / Rollback을 재이슈하여 해당 트랜잭션을 종료하는 기능이다.
    wsgwreload웹 서비스 게이트웨이의 서비스 정보, 설정 변경을 적용한다.
    restart서버 프로세스를 재기동한다.
    notify_reconnect_clh(nrc)특정 CLH 프로세스로 재접속 하라는 통지를 서버프로세스에 전달한다.

  • 기타

    명령어설명
    !바로 전에 사용한 명령어를 반복한다.
    quit(q)tmadmin을 종료한다.
    help(h)사용 가능한 옵션 리스트를 조회한다.
    nodeset(ns)멀티 노드 환경에서 특정 노드에 대한 정보만을 얻고자 하는 경우에 사용한다.
    nodeunset(nus)멀티 노드 환경에서 특정 노드에 대한 정보만을 얻고자 설정한 것을 해제한다.
    tmd가상의 클라이언트 애뮬레이터로서 서비스 프로그램의 유효성을 검토하는 경우 클라이언트 프로그램을 별도로 작성하지 않고 이 유틸리티를 이용한다.

5.3. 환경 정보 조회

5.3.1. tmaxinfo(ti)

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

  • 사용 방법

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

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

    $$11 tmaxi7 (tmadm): ti 
    
    Tmax System Info: REAL version 5.0 SP #2: 
    
             maxuser = UNLIMITED, 
             Supported maximum user per node = 1380
             Supported maximum user per handler = 691
             domaincount = 1, 
             nodecount = 1, 
             svgrpcount = 4, 
             svrcount = 6, svccount = 11
             rout_groupcount = 0, rout_elemcount = 0
             cousin_groupcount = 0, cousin_elemcount = 0
             backup_groupcount = 0, backup_elemcount = 0
    
    Tmax All Node Info: nodecount = 1: 
    ------------------------------------------------------------------
      no   name     portno  racport  shmkey  shmsize  minclh  maxclh  
    ------------------------------------------------------------------
       0   tmaxi7     7733   3333    79120   552652       1      3  

5.3.2. history

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

  • 사용 방법

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

5.3.3. config(cfg)

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

  • 사용 방법

    $$1 tmax1 (tmadm): config (cfg) [-d] [-n] [-g[server_group_name]]
                                    [-v[service_name]][-s [service_name]] 
                                    [-w [gateway_name]] [-r] [-b] [-f] [-pr]
    옵션설명
    [-d]도메인에 대한 환경 정보를 조회한다. 환경 파일의 DOMAIN 절과 관련된 모든 항목 내용과 도메인에 존재하는 정보를 확인할 수 있다.
    [-n]전체 노드에 대한 환경 정보를 조회한다.환경 파일의 NODE 절과 관련된 모든 항목 내용과 시스템에서 내부적으로 정의된 정보를 확인할 수 있다.
    [-g [server_group_name]]서버 그룹에 대한 환경 정보를 조회한다. 서버 그룹명을 지정하면 그 서버 그룹에 대한 정보만을 조회하고 서버 그룹명을 지정하지 않으면 모든 서버 그룹에 대한 정보를 조회한다. 그룹별로 각 서버 그룹에 대하여 환경 파일의 SVRGROUP 절과 관련된 모든 항목 내용을 확인할 수 있다.
    [-v [service_name]]서버에 대한 환경 정보를 조회한다. 서버명을 지정하면 그 서버에 대한 정보만을 조회하고 서버명을 지정하지 않으면 모든 서버에 대한 정보를 출력한다. 서버별로 각 서버에 대하여 환경 파일의 SERVER 절과 관련된 모든 항목 내용과 내부적으로 정의된 서버 번호(svr_no), 서버와 관련된 데이터 의존형 라우팅 정보(ddri)를 확인할 수 있다.
    [-s [service_name]]서비스에 대한 환경 정보를 조회한다. 서비스명을 지정하면 그 서비스에 대한 정보만을 조회하고 이름을 지정하지 않으면 모든 서비스에 대한 정보를 출력한다. 서비스별로 각 서비스에 대하여 환경 파일의 SERVICE 절과 관련된 모든 항목 내용을 확인할 수 있다.
    [-w [gateway_name]]게이트웨이에 대한 환경 정보를 조회한다. 게이트웨이명을 지정하면 그 게이 트웨이에 대한 정보만을 조회하고 이름을 지정하지 않으면 모든 게이트웨이에 대한 정보를 출력한다.
    [-r]라우팅 환경 정보를 조회한다.
    [-b]백업 환경 정보를 조회한다.
    [-f]Topend의 함수 정보를 조회한다.
    [-pr]Topend의 product 정보를 조회한다.
  • 예제

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

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

      $$1 tmaxi7 (tmadm): cfg -d  
          domain_name = tmax1, 
               shmkey = 77733, 
               minclh = 1, 
               maxclh = 3, 
               maxuser = UNLIMITED, 
               portno = 7733, 
               racport = 3377, 
               cmtret = YES, 
               blocktime(bt) = 30, 
               txtime(tt) = 0, 
               nliveinq(ni) = 30, 
               security = NONE, 
               cpc = 1, 
               maxfunc = 0, 
               clichkint = 0, 
               idletime = 0, 
               node_count = 2, 
               svg_count = 2, 
               svr_count = 4, 
               cousin_count = 1, 
               cousin_gcount = 3, 
               backup_count = 0, 
               backup_gcount = 0, 
               rout_count = 0, 
               rout_gcount = 0, 
               maxsacall = 8, 
               maxcacall = 16, 
               nclhchkint = -1, 
               maxconv_node = 16, 
               maxconv_server = 8, 
               maxnode = 32, 
               maxsvg = 32, 
               maxspr = 64, 
               maxsvr = 64, 
               maxsvc = 512, 
               maxcpc = 32, 
               maxtms = 32, 
               maxrout = 16, 
               maxroutsvg = 32, 
               maxrq = 2, 
               maxgw = 10, 
               maxcousin = 16, 
               maxcousinsvg = 32, 
               maxbackup = 16, 
               maxbackupsvg = 32, 
               maxtotalsvg = 64, 
               maxprod = 0, 
               tipsvc = , 
               crypt = NO 
               maxthread = 128, 
               tmmloglvl = DETAIL, 
               clhloglvl = DETAIL, 
               tmsloglvl = DETAIL, 
               loglvl = DETAIL 
               cllblock = NO 
               tdl = NO 

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

      항목설명
      nodecount도메인에 존재하는 노드 개수이다.
      svgcount서버 그룹 개수이다.
      cousin_gcountCOUSIN 항목이 정의된 그룹 개수로 부하 조절을 위한 복사 서버 그룹 개수이다.
      cousin_count모든 복사본 서버 그룹의 개수이다.
      rout_countROUTING 절에 정의된 라우팅 개체의 개수이다.
      relem_count각 라우팅 개체의 범위 항목에 정의된 각 범위별 라우팅 단위 개수이다.
    • 전체 노드의 환경 정보(-n)

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

      $$2 tmaxi7 (tmadm): cfg -n 
          node_name = tmaxi7, hostname = tmaxi7, node_no = 1,
               load = 0, 
               shmkey = 77733, 
               minclh = 1, 
               maxclh = 3, 
               maxuser = UNLIMITED, 
               Supported maximum user per node = 1380, 
               Supported maximum user per handler = 691,
               clhqtimeout(cqt) = 0, 
               portno = 7733, 
               racport = 3377, 
               tmaxhome = /data2/tmaxha/tmax/, 
               tmaxdir = /data2/tmaxha/tmax/, 
               appdir = /data2/tmaxha/tmax/appbin/, 
               pathdir = /data2/tmaxha/tmax/path/, 
               tlogdir = /data2/tmaxha/tmax/log/tlog/, 
               slogdir = /data2/tmaxha/tmax/log/slog/, 
               ulogdir = /data2/tmaxha/tmax/log/ulog/, 
               envfile = , 
               svgcount = 2, 
               svrcount = 4, 
               svccount = 4, 
               curclh = 1, 
               ipcperm = 1c0, 
               clichkint = 0, 
               idletime = 0, 
               tmmopt = , 
               clhopt = , 
               tlmopt = , 
               realsvr = , 
               rscpc = 4, 
               maxsvg = 32, 
               maxsprs = 64, 
               maxsvr = 64, 
               maxtmss = 32, 
               maxcpc = 32, 
               maxgwsvr = 2, 
               maxrqsvr = 2, 
               maxgwcpc = 8, 
               restart = YES, 
               maxrstart = -1, 
               gperiod = 86400, 
               autobackup = YES,
               logoutsvc = , 
               extport = 0, 
               maxthread = 128, 
               cllblock(cb) = NO, 
               cllconnlb = RR, 
               tdl = NO, 
               smsupport = NO,

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

      항목설명
      node_no시스템에서 내부적으로 정의된 노드 번호이다.
      svgcount노드 내에 존재하는 서버 그룹 개수이다.
      svrcount서버 개수이다.
      svccount서비스 개수이다.
      curclh노드에서 동작 중인 CLH 프로세스 개수이다.
      maxsprs동작 가능한 최대 서버 프로세스의 개수이다.
      maxtms최대 TMS 프로세스 개수이다.
    • 서버 그룹의 환경 정보(-g)

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

      $$2 tmaxi7 (tmadm): cfg -g svg2 
          svg_name = svg2, svg_no = 3 ,
               xaoption = , 
               openinfo = Oracle_XA+Acc=P/scott/tiger+SesTm=60, 
               closeinfo = , 
               appdir = , 
               ulogdir = , 
               svgtype = TMAX,
               envfile = , 
               tmsname = tms_ora, 
               mintms = 2, 
               maxtms = 3, 
               tmstype = STD, 
               tmsthreads = 0, 
               tmsopt = , 
               tmsrecovery = YES, 
               tmsrange = DOMAIN, 
               tmsxatime = 0, 
               load(ld) = -9, 
               tms starti = 0, 
               tms endi = 2, 
               restart = YES, 
               maxrstart = -1, 
               gperiod = 86400, 
               autobackup = YES,
               dummy = NO,
               dbname = ORACLE ,
               rmid = 0 
    • 서버의 환경 정보(-v)

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

      $$4 tmaxi7 (tmadm): cfg -v svr2 
      svr_name = svr2, svr_no = 4 ,
               svgno = 2, 
               cursvr = 1, 
               clopt = , 
               seq = -1, 
               minsvr = 1, 
               maxsvr = 1, 
               ulogdir = , 
               maxqcount(mq) = -1, 
               asqcount(aq) = -1, 
               conv = NO, 
               ddri = DDR_NO_ROUT, 
               lifespan(ls) = -1, 
               restart(rs) = YES, 
               maxrstart(mr) = 5, 
               gperiod(gp) = 86400, 
               svrtype = TMAX_STD, 
               schedule = FA, 
               cpc = 1, 
               dummy = NO, 
               aus = NO, 
               mac = NO, 
               roc = NO, 
               multiclh = YES
    • 서비스의 환경 정보(-s)

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

      $$5 tmaxi7 (tmadm): cfg -s 
      ---------------------------------------------------------------------------------
      svc_name     funcname  prio(pr)  autotran  svctime(st)  routno  svrname    svgno
      ---------------------------------------------------------------------------------
      _hms01                      50          NO          0      -1    _hms01        4
      TOLOWER                     50          NO          0      -1    svr2          2
      TOUPPER                     50          NO          0      -1    svr2          2
      HMS                         50          NO          0      -1    svr_hms       2
      FDLTOLOWER                  50          NO          0      -1    svr3          2
      FDLTOUPPER                  50          NO          0      -1    svr3          2
      FDLDEL                      50          NO          0      -1    fdltest       3
      FDLSEL                      50          NO          0      -1    fdltest       3
      FDLINS                      50          NO          0      -1    fdltest       3
      FDLUPT                      50          NO          0      -1    fdltest       3
      gw2301X                     50          NO          0      -1    gw2301X       0
    • 게이트웨이의 환경 정보(-w)

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

      $$7 tmaxi7 (tmadm): cfg -w 
          gw_name = gw2301X, node_no = 0, gw_no = 0,
          gw_type = TMAX,
          portno = 4020,
          rgwaddr = 192.168.1.89,
          rgwportno = 4010,
          backup_rgwaddr = ,
          backup_rgwportno = -1,
          backup_rgwaddr2 = ,
          backup_rgwportno2 = 0,
          backup_rgwaddr3 = ,
          backup_rgwportno3 = 0,
          cpc = 2,
          timeout = 30,
          direction = BIDIR,
          maxinrgw = 32,
          clopt = ,
          ptimeout = -1,
          ptimeint = -1,
          gwchkint = -1,
          gwconnect_timeout = -1,
          nliveinq = -1

5.3.4. configopt(cfgopt)

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

  • 사용 방법

    $$1 tmax1 (tmadm): configopt (cfgopt) [-tmm]
    옵션설명
    [-tmm]TMMOPT 환경설정에 정의된 옵션 중 동적 변경이 가능한 옵션들의 현재 설정된 값을 확인한다.
  • 예제

    • TMMOPT의 환경 정보(-d)

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

      $$1 tmax1 (tmadm): cfgopt -tmm
      ------------------------------------------------------------------------
              -tmm configurable value
      ------------------------------------------------------------------------
               accept retry count(-A) = 100
               max forked threshold(-F) = 765
               booting timeout(-t) = 10
      ------------------------------------------------------------------------

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

      항목설명
      accept retry count(-A)서버 프로세스의 접속 요청에 대해서 accept를 처리할 때 한 번에 처리할 횟수이다. TMMOPT의 -A 옵션 설명을 참조한다.
      max forked threshold(-F)TMM에서 서버 프로세스의 추가 기동이나 프로세스 재기동 등으로 인해 새로운 프로세스를 생성할 때 동시에 처리할 수 있는 최대 개수이다. TMMOPT의 -F 옵션 설명을 참조한다.
      booting timeout(-t)ASQCOUNT로 기동된 서버 프로세스의 접속 타임아웃 시간이다. TMMOPT의 -t 옵션 설명을 참조한다.

5.4. 동작 상태 정보

5.4.1. stat(st)

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

  • 사용 방법

    $$1 tmax1 (tmadm): stat (st) [-p [server_process_name]] [-s [service_name]]
                                 [-t [TMS_name]] [-v [server_process_name] [-pod]]
                                 [-o [sort할 조건]] [-n [출력되는 메시지 라인]]
                                 [-x] [-X] [-q [destination_name [-c]]]
    옵션설명
    [-p [server_process_name]]

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

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

    [-s [service_name]]서비스에 대한 정보를 조회한다. 서비스명을 지정하면 해당 서비스에 관한 정보만 출력되고, 서비스명을 지정하지 않으면 제공되는 모든 서비스에 관한 정보들이 출력된다.
    [-t [TMS_name]]시스템에서 제공하는 TMS에 대한 동적 정보를 알려준다. TMS명을 지정하면 해당 TMS에 관한 정보만 출력되고 TMS명을 지정하지 않으면 제공되는 모든 TMS에 관한 정보가 출력된다.
    [-v [server_process_name] [-pod]]

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

    [-pod] 옵션을 사용하면 POD 서버의 상태 부분에 항상 "(POD)" 가 출력된다. 이 옵션이 없으면 POD 서버의 상태가 기동시에는 RDY, 미기동시에는 NRDY로 표시된다. POD 서버는 NRDY 상태이더라도 서비스 요청시 자동으로 기동되어 처리되므로 상태가 중요하지 않으며, 모니터링시 문제인 서버로 오해할 수 있다. 이 옵션을 사용하여 불필요한 오해를 줄일 수 있다.

    [-o [sort할 조건]]

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

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

    • [ -o ca ] : 내림차순

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

    [-n [출력되는 메시지 라인]]sort되어 출력되는 메시지 라인을 지정할 수 있다. sort되어 출력되는 메시지 라인(서버 프로세스 또는 서비스의 개수)을 지정하는 옵션으로 반드시 [–o] 옵션과 함께 사용되어야 한다.
    [-x]

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

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

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

    • TMS(-t) 정보를 조회할 때의 xid, xa_status

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

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

      (예: RDY(NRDY))

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

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

      서버 프로세스의 Suspend 상태를 조회한다. Suspend 상태에 있다면 다음과 같이 표시된다.

      (예: RDY(BLK))

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

    [-q [destination_name]]HMS destination에 대한 정보를 보여준다. 환경설정 파일에서 설정한 destination의 목록과 각 destination에서 처리 중인 메시지와 클라이언트의 정보를 확인할 수 있다.
    [ -d ]

    서버 프로세스를 조회(st -p)할 때 서버 프로세스가 RUN 상태일 때 경과시간이 표시된다. 그 외의 상태일 경우 '-'로 표시된다.

    (예: st -p -d )

    반드시 st -p와 함께 사용해야 되며 st -p -x와는 함께 사용할 수 없다.

  • 예제

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

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

      $$1 tmax1 (tmadm): st –p
      CLH 0 :
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svr_name   svgname    spr_no    status    count     avg     svc
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svr1          svg1          1     RDY          1     0.001     -1
      svr2          svg1          2     RDY          1     0.001     -1
      svr3          svg1          3     RDY          1     0.001     -1
      syncrtn       svg1          4     RDY          1     0.001     -1
      syncrtn       svg1          5     RDY          1     0.001     -1
      ucs           svg1          6     RDY          1     0.001     -1
      ucs           svg1          7     RDY          1     0.001     -1
      ucs           svg1          8     RDY          1     0.001     -1
      _rqsvg        rqsvg1        9     RDY          1     0.001     -1
      _rqsvg        rqsvg1       10     RDY          1     0.001     -1
      TOTAL COUNT = 1
      TOTAL AVG = 0.001
      TOTAL RUNNING COUNT = 0

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

      항목설명
      svr_name서버 프로세스명이다.
      svgname서버 프로세스가 속해있는 서버 그룹명이다.
      spr_no각 서버별 프로세스의 ID이다.
      status서버 프로세스의 현재 상태로 자세한 설명은 다음의 [시스템 동작 상태]를 참고한다.
      count처리한 서비스 개수이다.
      avg프로세스의 평균 처리시간이다.
      svc처리 중인 서비스명이다. 현재 처리 중인 서비스가 없는 경우 -1로 표시된다.

      [시스템 동작 상태]

      다음은 시스템 동작 상태를 볼 수 있는 st의 명령으로 나타나는 결과에서 status 항목에 표시되는 내용에 대한 설명이다.

      상태설명
      RDYReady 상태이다.
      NRDYNon-Ready 상태로 NRDY인 경우는 tpstart하고 클라이언트가 소켓으로 연결이 맺어진 상태에서 서버로부터 데이터가 전송이 안 되는 경우에 발생할 수 있는 상태이다. 예를 들면 네트워크 상태가 좋지 않을 경우에 발생할 수 있다.
      RUN실행 중인 상태이다.
      Unregisted등록되지 않은 상태로 클라이언트에 tpend 직후에 잠시 나왔다가 상태가 변경된다.
      BLK해당 서비스의 모든 프로세스가 suspend된다.
      PBLK해당 서비스의 일부 프로세스가 suspend된다.
      UNADV해당 서비스가 속한 모든 서버 프로세스가 unadvertise된 상태이다.
      PUNADV해당 서비스가 속한 일부 서버 프로세스가 unadvertise된 상태이다.

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

      $$1 tmax1 (tmadm): st –p s*
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svr_name   svgname         spr_no     status      count    avg    svc
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svr1          svg1           1     RDY          0     0.000      -1
      svr2          svg1           2     RDY          0     0.000      -1
      svr3          svg1           3     RDY          0     0.000      -1
      syncrtn       svg1           4     RDY          0     0.000      -1
      syncrtn       svg1           5     RDY          0     0.000      -1
    • 서비스의 정보(–s)

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

      $$1 tmax1 (tmadm): st –s
      CLH 0:
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svc_name svr_name count  avg   cq_count  aq_count q_avg   status 
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      FORW        svr1     0    0.000      0          0      0.000    RDY
      COMVER      svr1     3    0.670      0          0      0.000    RDY
      REGIST      svr1     0    0.000      0          0      0.000    RDY
      VIEW        svr1     0    0.000      0          0      0.000    RDY
      SYNC        svr1     10   0.000      0          0      0.000    RDY
      ASYNC       svr1     0    0.000      0          0      0.000    RDY
      CONVER_R    svr1     0    0.000      0          0      0.000    RDY

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

      항목설명
      svc_name서비스명이다.
      svr_name서비스가 속한 서버명이다.
      count처리한 서비스 건수이다.
      avg서비스의 평균 처리시간이다.
      cq_count현재 대기 중인 서비스 요청 건수이다.
      aq_count잠시라도 대기했던 총 서비스 요청 건수이다.
      q_avg서비스의 평균 대기시간이다.
      status서비스의 현재 상태이다. 상태에 대한 자세한 설명은 [시스템 동작 상태]를 참고한다.

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

      $$1 tmax1 (tmadm): st –s *W
      CLH 0:
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svc_name svr_name count  avg   cq_count  aq_count q_avg   status 
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      FORW        svr1     0    0.000      0          0      0.000    RDY
      VIEW        svr1     0    0.000      0          0      0.000    RDY
    • TMS 정보(-t)

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

      $$1 tmax1 (tmadm): st -t
      CLH 0: 
      ----------------------------------------------------------------
      tms_name svgname  spr_no  status  count  avg  cqcount
      ----------------------------------------------------------------
      tms_ora    svg1       0     RDY     5   0.00     2   
      tms_ora    svg1       1     RDY     4   0.00   (  1)

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

      항목설명
      tms_nameTMS명이다.
      svgnameTMS가 속해 있는 서버 그룹명이다.
      spr_noTMS의 프로세스 ID이다.
      statusTMS의 현재 상태로 자세한 설명은 [시스템 동작 상태]를 참고한다.
      count처리한 TMS의 건수이다.
      avgTMS의 평균 처리시간이다.
      cqcount현재 대기 중인 요청 건수이다.

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

      $$1 tmax1 (tmadm): st -t -x
      CLH 0: 
      ----------------------------------------------------------------
       tms_name    svgname    spr_no(tid) status   count    avg   cqcount
                  XID           xastate
      ----------------------------------------------------------------
         tms_ora_mt   svgora1         0       RUN        0    0.00      0
              000:000:13505         commit
         tms_ora_mt   svgora1         0(  1)  RDY        0%   0.00   (  0)
              000:000:00000        -
         tms_ora_mt   svgora1         0(  2)  RDY        0%   0.00   (  0)
              000:000:00000        -
      ----------------------------------------------------------------
         tms_ora_mt   svgora1         1       RDY        0    0.00   (  0)
              000:000:00000        -
         tms_ora_mt   svgora1         1(  1)  RDY        0%   0.00   (  0)
              000:000:00000        -
         tms_ora_mt   svgora1         1(  2)  RDY        0%   0.00   (  0)
              000:000:00000        -
      ----------------------------------------------------------------
         tms_ora_mt   svgora2        10       RDY        0    0.00      0
              000:000:00000        -
         tms_ora_mt   svgora2        10(  1)  RDY        0%   0.00   (  0)
              000:000:00000        -
         tms_ora_mt   svgora2        10(  2)  RDY        0%   0.00   (  0)
              000:000:00000        -
      ----------------------------------------------------------------
         tms_ora      svgora3        20       RDY        0    0.00      0
              000:000:00000        -
      ----------------------------------------------------------------
         tms_ora      svgora3        21       RDY        0    0.00   (  0)
              000:000:00000        -
      ----------------------------------------------------------------
    • 상세 정보(-x)

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

      $$20 tmaxi7 (tmadm): st -p -x 
      
      CLH 0: 
         ---------------------------------------------------------------------------
         svr_name     svgname     spr_no     status      count        avg        svc
                          PID   fail_cnt    err_cnt   min_time   max_time
                        utime  umin_time  umax_time      stime  smin_time  smax_time
         ---------------------------------------------------------------------------
         gw2301X      gw2301X         32        RDY          0      0.000         -1
                        60817498          0          0      0.000      0.000
                        0.000      0.000      0.000      0.000      0.000      0.000
         svr2         svg1            36        RDY          3      0.006         -1
                        7602750          0          0      0.000      0.018
                        0.000      0.000      0.000      0.000      0.000      0.000
         ---------------------------------------------------------------------------
         TOTAL COUNT = 3
         TOTAL SVCFAIL COUNT = 0
         TOTAL ERROR COUNT = 0
         TOTAL AVG = 0.006
         TOTAL RUNNING COUNT = 0

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

      $$1 tmax1 (tmadm): st -s -x
      
      CLH 0: 
         -----------------------------------------------------------------------------------------------
         svc_name     svr_name    count  cq_cnt  aq_cnt   q_avg    avg   status
                      fail_cnt   err_cnt      mintime      maxtime
                      utime      umin_time    umax_time    stime    smin_time    smax_time
         -----------------------------------------------------------------------------------------------
         INSERT2     xagwtest2       0      0       0    0.000    0.000   RDY
                         0           0        0.000        0.000
                       0.000      0.000       0.000        0.000      0.000      0.000

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

      항목설명
      PID서버프로세스의 PID이다.
      fail_cnt서버프로세스/서비스의 FAIL COUNT이다.
      err_cnt서버프로세스/서비스의 ERROR COUNT이다.
      mintime서비스를 처리한 최소 시간이다.
      maxtime서비스를 처리한 최대 시간이다.
      utime서버 프로세스에서 매번 서비스 처리시마다 소모한 user time 값이다.
      umin_timeuser time의 최소 소모시간입니다.
      umax_timeuser time의 최대 소모시간입니다.
      stime서버 프로세스에서 매번 서비스 처리시마다 소모한 system time 값이다.
      smin_timesystem time의 최소 소모시간입니다.
      smax_timesystem 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.000      -1
      svr1          svg1           36     RDY          6     0.000      -1
      svr3          svg1           38     RDY          2     0.000      -1
      TOTAL COUNT = 18
      TOTAL AVG = 0.000
      TOTAL RUNNING COUNT = 0

      다음은 'st –s' 명령어에 [-o] 옵션을 사용한 예제이다.

      $$1 tmax1 (tmadm): st –s –o ca
      CLH 0:
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svc_name svr_name count  avg   cq_count  aq_count q_avg   status 
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      TOUPPER     svr2     10    0.000      0          0      0.000    RDY
      SDLTOUPPER  svr1     5     0.000      0          0      0.000    RDY
      FDLTOUPPER  svr3     2     0.000      0          0      0.000    RDY
      SDLTOLOWER  svr1     1     0.000      0          0      0.000    RDY
      FDLTOLOWER  svr3     0     0.000      0          0      0.000    RDY
      TOLOWER     svr2     0     0.000      0          0      0.000    RDY
      • 내림 차순 조건

        조건설명
        ca처리한 건수(count)
        aa평균 처리 시간(avg)
        cq현재 큐잉 건수(cq_count)
        aq평균 큐잉 건수(aq_count)
        qa평균 큐잉 시간(q_avg)
        ce각 서버별 처리 건수를 기준으로 서버별로 sort
        ae각 서버별 평균 처리 시간을 기준으로 서버별로 sort
      • 오름 차순 조건

        조건설명
        ca-처리한 건수(count)
        aa-평균 처리 시간(avg)
        cq-현재 큐잉 건수(cq_count)
        aq-평균 큐잉 건수(aq_count)
        qa-평균 큐잉 시간(q_avg)
        ce-각 서버별 처리 건수를 기준으로 서버별로 sort
        ae-각 서버별 평균 처리 시간을 기준으로 서버별로 sort
    • 출력 메시지의 라인 수 지정(-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.000      -1
      svr1          svg1           36     RDY          6     0.000      -1
      TOTAL COUNT = 18
      TOTAL AVG = 0.000
      TOTAL RUNNING COUNT = 0

      다음은 출력 메시지의 라인 수를 3으로 설정한 예제이다.

      $$1 tmax1 (tmadm): st –s –o ca –n 3
      CLH 0:
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      svc_name svr_name count  avg   cq_count  aq_count q_avg   status 
      - -- - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - 
      TOUPPER     svr2     10    0.000      0          0      0.000    RDY
      SDLTOUPPER  svr1      5    0.000      0          0      0.000    RDY
      FDLTOUPPER  svr3      2    0.000      0          0      0.000    RDY
    • HMS destination 정보(-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이 아닌 경우 하이픈(-)으로 표시된다.
      destdestination의 이름으로 환경설정 파일에서 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

      해당 데스티네이션에 연결된 클라이언트의 종류이다.

      • 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(유효시간)이 지나서 실패 처리된 메시지 건수이다.
      listenerASYNC 세션으로 생성한 소비자(consumer)의 경우 메시지를 수신할 서비스명이다.

5.4.2. gwinfo

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 주소이다.
      statuswebt, 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

5.4.3. txgwinfo / nontxgwinfo

tmadmin에서 리모트 게이트웨이와의 연결 상태를 확인할 수 있는 명령어이다. 이와 더불어 현재 메인 노드와 연결되어 있는지, 백업 노드와 연결되어 있는지, 어떤 노드와 연결되어 있는지의 상세한 정보를 확인할 수 있다.

txgwinfo(txgwi)는 Tmax 게이트웨이의 정보를 확인하며, nontxgwinfo(ntxgwi)는 Tmax Non 트랜잭션(TMAXNONTX) 게이트웨이의 정보를 확인한다.

  • 사용 방법

    • txgwinfo

      $$1 tmax1 (tmadm): txgwinfo
    • nontxgwinfo

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

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

    • txgwinfo

      10/user2/starbj81>tmadmin
      --- Welcome to Tmax Admin (Type "quit" to leave) --- 
      
      $$1 tmaxs1 (tmadm): txgwinfo
      ----------------------------------------------------------------
        gw_no   channel    type    foreign_address              status   
      ----------------------------------------------------------------
         0   OUTCH      PRIM    tmaxc1(192.168.1.12:9400)     RDY   
         1   OUTCH      PRIM    tmaxc1(192.168.1.12:9400)     RDY   
         4   INCH          -     tmaxc1(192.168.1.12:1434)     RDY   
         5   INCH          -     tmaxc1(192.168.1.12:1436)     RDY   
         6   INCH          -     tmaxh2(192.168.1.48:58094)    RDY   
         7   INCH          -     tmaxh2(192.168.1.48:58093)    RDY   

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

      항목설명
      gw_no게이트웨이 번호이다.
      channel채널이 INBOUNT인지, OUTBOUND인지를 표시한다.
      type현재 메인과 연결되어 있는지 백업과 연결되어 있는지를 표시한다.
      foreign_address연결되어 있는 리모트 게이트웨이의 IP 주소이다.
      statuswebt, 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

5.4.4. jgwinfo / ajgwinfo

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게이트웨이명이다.
      channelINBOUNT channel인지, OUTBOUND channel인지를 표시한다.
      type현재 메인과 연결되어 있는지, 백업과 연결되어 있는지를 표시한다.
      foreign_address연결되어 있는 리모트 게이트웨이의 IP 주소이다.
      statuswebt, 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 

5.4.5. wsgwinfo

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.4.6. smtrc

환경 파일 NODE 절의 SMSUPPORT가 'Y'로 설정되어 있을 경우, 'st –p –x'를 실행하면 수행 중인 서비스에 대해서 해당 GID를 출력한다.

  • 사용 방법

    $$1 tmax1 (tmadm): smtrc [-a] GID0 GID1
    항목설명
    [-a]기존 정보 외에 서버 프로세스 인덱스(spri), 사용자 CPU 사용 시간, 시스템 CPU 사용 시간, 반환 정보 등을 모두 표시한다
    GID0SysMaster의 GID 상위 4Byte를 Hexa decimal로 표기한다.
    GID1SysMaster의 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_idSysMaster의 gid이다.
    status서비스 상태이다.
    svc_name서비스명이다.
    ctime로그를 생성한 시간이다.
    svctime서비스 수행시간이다.
    spri서비스를 실행한 서버 프로세스 인덱스이다.
    ucpu사용자 cpu time 이다.
    scpu시스템 cpu time 이다.

5.4.7. clhsinfo

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노드명이다.
    clhnoCLH 번호이다.
    cpcCPC 번호이다.
    status노드의 상태이다. 노드 상태에 대한 자세한 설명은 [노드 동작 상태]의 설명을 참고한다.

    [노드 동작 상태]

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

    구분설명
    NRDY(NOT_READY)대상 CLH와 연결이 되어 있지 않거나 연결이 끊어진 상태이다.
    RDY(READY)정상적으로 연결되어 있는 상태이다.
    REG(REGISTERED)노드 간 연결을 진행 중인 상태이다.
    UNR(UNREGISTERED)해당 노드가 tmdown 요청으로 종료되는 상태이다.
    NSTRT(NCLHSTARTED)노드 간 연결을 진행 중인 상태에서 대상 노드의 CLH가 시작된 상태이다.
    CTNG(TRYINGTOCONNECT)노드 간 TCP/IP 소켓만 연결되어 있고 대상 노드로 연결 메시지를 보내지 않은 상태이다.
    NPING(ALIVECHECK)해당 노드가 연결되어 있는 상태에서 alive check를 수행하고 있는 상태이다.
    NPING2(ALIVECHECK2)해당 노드로부터 alive check에 대한 응답이 오지 않는 상태이다.

5.4.8. tmmsinfo

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  

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

    항목설명
    noTMM 번호이다.
    nodename노드명이다.
    livectime최근 채널 사용 시간이다.
    status노드의 상태로 자세한 설명은 [노드 동작 상태]의 설명을 참고한다.

5.4.9. repeat(r)

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

  • 사용 방법

    $$1 tmax1 (tmadm): r -k n -i s 반복 수행 명령어
    항목설명
    -k nn번 반복 수행한다.
    -i ss초 간격으로 반복 수행한다.
    반복 수행 명령어반복할 대상 명령어를 지정한다.
  • 예제

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

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

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

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

5.4.10. clientinfo(ci)

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

  • 사용 방법

    $$1 tmax1 (tmadm): ci [–s]
    옵션설명
    [-s]연결된 총 클라이언트의 개수를 파악할 수 있다.
  • 예제

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

    $$1 tmax1 (tmadm): ci
    CLH 0:
    ---------------------------------------------------------------------------
       cli_id    clid    status    count   lastin_time   ipaddr      usrname
    ---------------------------------------------------------------------------
         0   0x00200000    RDY         0         10       192.168.1.43  
         1   0x00200001    RDY         0         91       192.168.1.43   tmax
    

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

    항목설명
    cli_id클라이언트 ID이다.
    clid노드번호+CLH번호+cli_id 를 조합한 16진수 값이다.
    status클라이언트의 현재 상태로 자세한 설명은 [클라이언트 동작 상태]의 설명을 참고한다.
    count서비스 처리 건수이다.
    lastin_time클라이언트가 서비스 호출 후 대기하는 시간이다.
    ipaddr클라이언트의 접속 IP 주소이다.
    usrnameTPSTART_T 구조체의 usrname 필드에 정의한 사용자명이다.

    [클라이언트 동작 상태]

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

    상태설명
    RDY클라이언트가 정상적으로 CLH에 접속되어 있는 상태이다.
    NRDYCLH와 연결을 맺고 있는 클라이언트 중 TCP/IP 소켓만 연결되어 있고 정상적으로 연결 메시지(TPSTART 메시지)를 보내지 않은 상태이다.
    QED클라이언트의 서비스 요청이 서버 큐에 쌓여 있는 상태이다.
    CTING 클라이언트가 CLH에 연결 중인 상태이다.
    UNR 클라이언트가 tpend()과정 중이거나 NCLH가 내려갈 때의 상태이다.
    RUN 클라이언트가 요청한 서비스가 실행 중인 상태이다.

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

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

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

    항목설명
    clhCLH 번호이다.
    svrname서버명이다.
    (svri)서버 ID이다.
    status서버의 현재 상태로 자세한 설명은 [시스템 동작 상태]를 참고한다.
    count처리 건수이다.
    qcount서버의 큐잉 건수이다.
    qpcount큐에서 삭제된 건수이다.
    emcount최대 큐잉 건수(maxqcount)를 초과하여 반환된 건수이다.

5.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의 도메인 게이트웨이에 대해 조회한다.
    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)
      xastateXA 처리 상태이다.
    • 트랜잭션 정보 조회(-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

5.4.13. rqstat(rqs)

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

  • 사용 방법

    $$1 tmax1 (tmadm): rqstat (rqs) [-l] [-s rqname] [-f rqname] [-c rqname]
    옵션설명
    [-l]사용 가능한 RQ를 보여준다.
    [-s rqname]해당 RQ의 상태를 보여준다.
    [-f rqname]RQ에 쌓여 있는 서비스를 처리한다.
    [-c rqname]정체된 RQ를 제거한다.

    참고

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

  • 예제

    • RQ 조회(-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

5.5. 운용 관리

5.5.1. suspend(sp)

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

  • 사용 방법

    $$1 tmax1 (tmadm): suspend {-s svc_name [-p pid] | -v svr_name [-k num] [-a]}
    옵션설명
    -s svc_name서비스명이다.
    [-p pid]서비스를 서버 프로세스별로 suspend하는 옵션으로 [-s] 옵션과 함께 사용된다.
    -v svr_name

    서버 프로세스의 스케줄링을 막는 옵션이다. 요청된 서비스는 큐에 대기하며, resume 될 때까지 대기하거나 MAXQCOUNT, CLHQTIMEOUT 설정에 의해 큐에서 제거될 수 있다.

    [-k num]

    대상 서버 중 일부 프로세스들을 suspend 하는 옵션이다. [-v] 옵션과 함께 사용된다. 옵션으로 지정한 개수만큼 suspend시키며, 이미 일부 서버 프로세스가 suspend 된 경우에는 옵션 설정값만큼 추가로 suspend된다. 옵션 설정값은 해당 서버의 MAX를 초과할 수 없다.

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

    suspend(sp) -v svr_name [-k 5]

    [-k] 옵션을 사용하여 서버 프로세스가 MAX개 모두 suspend되면 서버의 상태는 BLK로 바뀌게 된다. [-k] 옵션 없이 sp -v svr_name을 실행한 것과 동일하다.

    [-a]suspend를 요청했을 때 대상이 되는 서버가 서비스를 실행 중인 경우에는 서비스가 종료될 때까지 대기하게 된다. 이 옵션을 사용하면 대상 서버가 서비스를 실행중이더라도 대기하지 않고 즉시 Suspend 상태로 변경한다. [-v] 옵션과 함께 사용된다.

5.5.2. resume(rs)

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

  • 사용 방법

    $$1 tmax1 (tmadm): resume {-s svc_name [-p pid] | -v svr_name [-k num]}

    옵션설명
    -s svc_name서비스의 스케줄링을 재개하는 옵션이다.
    [-p pid]

    서비스를 서버 프로세스별로 재개한다. 서비스를 서버 프로세스별로 suspend / resume하고자 할 때 suspend를 수행할 경우 관련 서비스가 수행 중이면 수행이 완료된 후에 suspend가 진행되므로 시간이 오래 걸릴 수 있다. 이 경우 tmadmin을 강제 종료시키면 해당 서비스가 재개된다. suspend 이후 해당 서비스에 대한 요청은 큐에 쌓이게 된다. [-s] 옵션과 함께 사용된다.

     resume(rs) -s svc_name [-p pid]
    -v svr_name서버 프로세스의 스케줄링을 재개하는 옵션이다.
    [-k num]

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

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

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

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

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

  • suspend 상태의 서버를 resume 처리하는 방식 변경

    Tmax 버전에 따라 동작 방식이 다르므로 주의해야 한다.

    • Tmax 4.0 Sp3 Fix10, Tmax 4.0 Sp8 Fix1, Tmax5.0 Sp1 Fix1 이후

      tmadmin에서 서버 프로세스를 suspend한 경우에 해당 프로세스를 tmdown 후 tmboot 하더라도 Suspend 상태가 그대로 유지된다. 또한 서버 프로세스가 Suspend 상태에 있어도 tmboot 로 프로세스를 기동시킬 수 있다. 따라서 suspend 된 서버를 tmboot 로 기동시킨 다음에는 반드시 resume을 해주어야 서비스가 가능하다.

    • Tmax 4.0 이후

      tmadmin에서 서버 프로세스를 suspend한 경우에 해당 프로세스를 tmdown 후 tmboot하면 해당 프로스세의 status가 자동으로 재개된다. 서버 프로세스가 suspend된 상태에서는 해당 프로세스를 tmboot할 수 없도록 제한한다.

      $ tmboot -s svr02011
         TMBOOT for node(tmaxh4) is starting: 
         Welcome to Tmax demo system: it will expire 2006/1/25 
         Today: 2005/12/19 
         (E) BOOT3020 svr02011 is suspended, resume(or tmdown) it first. [BOOT0038]
  • 한 노드의 COUSIN 그룹에 속한 서버에 대한 suspend / resume

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

주의

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

5.5.3. advertise/unadvertise

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.5.4. restat

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

  • 사용 방법

    $$1 tmax1 (tmadm): restat [-v [server_process_name]] [-a]
    옵션설명
    [-v [server_process_name]]지정된 서버 프로세스의 통계 정보를 초기화한다.
    [-a]모든 서버 프로세스의 통계 정보를 초기화한다.

5.5.5. rebootsvr(rbs)

rbs(Reboot Server Process)는 현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경한다. TMAX_BKAPPDIR를 '.profile'의 환경변수에 지정하고 새로운 프로그램의 실행 파일로 지정한다.

예를 들어 $TMAXDIR/bk_appbin에 옮기고 다음의 명령어를 수행한다.

  • 사용 방법

    $$1 tmax1 (tmadm): rbs new_file old_file
    항목설명
    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를 실행한다.

    • 현재 3개의 svr2 서버 프로세스가 기동된 경우

      $$1 tmax1 (tmadm): rbs svr2 svr2
      TMBOOT for node(tmaxh2) is starting: 
              TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting: 
               Fri Dec 19 11:21:06 2003 
      TMBOOT for node(tmaxh2) is starting: 
              TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting: 
              Fri Dec 19 11:21:06 2003 
      TMBOOT for node(tmaxh2) is starting: 
              TMBOOT: SVR(svrname: svr2, execname: _rbs00_svr2) is starting: 
              Fri Dec 19 11:21:06 2003 
      
      >> 3 servers booted using tmp execfile _rbs01_svr2
      >> reboot svr /data2/starbj81/tmax64/appbin/svr2 finished
    • 현재 1개의 svr2 서버 프로세스가 기동된 경우

      $$1 tmax1 (tmadm): rbs svr2 svr2
      >> suspend ok 
      >> down ok 
      >> cp ok 
      >> boot ok 
      >> resume ok 
      >> reboot svr /data2/starbj81/tmax64/appbin/svr2 finished
  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_namesuspend 대상의 서버명이다.
    [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): mrbs [-S | -s svc_name,...] newfile svr_name 
    항목설명
    [-S]해당 서버의 전체 서비스를 suspend한다.
    [-s svc_name]해당 서버의 하나의 서비스를 suspend한다.
    newfile새 파일명을 지정한다.
    svr_namesuspend 대상의 서버명이다.
  • 예제

    • 서버의 특정 서비스 변경(-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.5.6. cfgadd(ca)

cfgadd(ca)는 Tmax 운영 도중, 특정 서버 프로그램에 서비스가 추가될 때에 해당 서버만 다운시킨 후 이 명령을 사용하여 동적으로 서비스를 추가할 수 있다. 서비스 외에도 서버, 서버 그룹, 노드를 운영 중에 동적으로 추가할 수 있다. Tmax 5.0부터는 CFL의 –a 옵션을 사용하지 않고 생성한 이진 환경 파일을 동적 추가할 수 없으므로 반드시 -a 옵션을 이용해서 환경 파일을 컴파일해야 한다.

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

  • 사용 방법

    $$1 tmax1 (tmadm) :  cfgadd (ca)  - i  cfgfile
    항목설명
    - i cfgfile추가할 서비스의 환경 파일명을 지정한다.

서비스 동적 추가

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

  1. 해당 추가할 환경 파일을 생성한다.

    $vi new.m
  2. 새로 만든 환경 파일을 기존 환경 파일에 -a 로 추가하고, cfl로 –o 옵션을 사용하여 다른 이름의 바이너리 환경 파일을 생성한다.

    $cfl -i org.m -a new.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. 새로운 서버 추가 환경 파일 tmchg.m을 만든 후 추가 환경만 등록한다.

    <tmchg.m>

    *SERVER
    hello           SVGNAME = svg1
    *SERVICE
    HELLO           SVRNAME = hello
  2. 환경 파일을 컴파일한다. tmconfig.m은 기존의 환경 파일, tmchg.m은 서버 추가 환경 파일을 의미한다.

    cfl -i tmconfig.m -a tmchg.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.m>

    *DOMAIN
    tmax1           SHMKEY = @SHMEMKY@, MINCLH = 1, MAXCLH = 3,
                    TPORTNO = @TPORTNO@, BLOCKTIME = 300, MAXCPC = 100,
                    RACPORT = @TRACPORT@
    *NODE
    @HOSTNAME@      TMAXDIR = "@TMAXDIR@",
                    APPDIR  = "@TMAXDIR@/appbin",
    @RMTNAME@       TMAXDIR = "@RMTDIR@",
                    APPDIR  = "@RMTDIR@/appbin",
                    
    *SVRGROUP
    svg1            NODENAME = "@HOSTNAME@",COUSIN = "svg2",LOAD = 2
    svg2            NODENAME = "@RMTNAME@",LOAD = 1
    
    *SERVER
    svr2            SVGNAME = svg1
    
    *SERVICE
    TOUPPER         SVRNAME = svr2
    TOLOWER         SVRNAME = svr2

    <tmconfig_add.m>

    *NODE
    @RMTNAME2@      TMAXDIR = "@RMTDIR2@",
                    APPDIR  = "@RMTDIR2@/appbin",
    
    *SVRGROUP
    svg1            NODENAME = "@HOSTNAME@",COUSIN = "svg2,svg3",LOAD = 2
    svg3            NODENAME = "@RMTNAME2@",LOAD = 1
  2. 추가된 새로운 노드에 racd를 기동한다.

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

    node1>$cfl -i tmconfig.m -a tmconfig_add.m –o tmchg
    CFL is done successfully for node(node1)
    
    CFL: rcfl start for rnode (node2)
    CFL is done successfully for node(node2)
    
    CFL: rcfl start for rnode (node3)
    CFL is done successfully for node(node3)
  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를 재기동해야만 한다.

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

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

  • 새로운 항목을 추가할 때, cfl -i 옵션에 사용하는 기존 환경설정 파일은 항상 마지막에 새로 추가한 환경설정 파일의 내용이 기존 환경설정 파일에 적용되어 있어야 한다.

  • MAXNODE, MAXSVG, MAXSVR, MAXSPR, MAXSVC, MAXTMS, MAXCPC 설정 이내에서 항목을 추가할 수 있음을 유의한다.

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

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

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

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

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

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

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

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

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

5.5.8. setopt

TMMOPT 등의 환경설정에 정의된 옵션 중 동적 변경이 가능한 환경설정값을 동적으로 변경할 수 있는 명령어이다.

변경 가능한 항목은 tmadmin에서 cfgopt 명령어를 통해서 확인할 수 있다. cfgopt에서 출력되는 항목이 동적으로 변경 가능한 항목이다.

  • 사용 방법

    $$1 tmax1 (tmadm): setopt [-tmm]  항목  값
    항목설명
    [-tmm]TMMOPT 환경설정에 정의된 옵션의 값을 변경하려는 경우에 설정한다.
    항목변경할 항목을 설정한다. cfgopt에서 출력되는 항목의 옵션을 설정한다. (예: -F)
    변경할 값을 설정한다.
  • 예제

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

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

5.5.9. 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]

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

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

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

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

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

5.5.10. discon(ds)

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

  • 사용 방법

    $$1 tmax1 (tmadm): ds [-h clhno] [-f] {-a | -n | -i idle_time | -c cli_id | -A}
    옵션설명
    [-h clhno]해당 CLH에 연결된 클라이언트 접속을 해제한다.
    [-f]클라이언트와의 접속을 즉시 해제하는 옵션이다.
    {-a}해당 CLH에 접속되어 있는 모든 클라이언트의 접속을 해제한다. [-h] 옵션이 적용되어 있지 않을 경우, 기본값으로 0번 CLH에 접속되어 있는 클라이언트의 연결이 해제된다.
    {-n}정확한 정보가 없는 클라이언트와의 연결을 해제한다. "tpalloc"로 할당된 버퍼는 사용하지 않는다.
    {-i idle time}지정된 시간(초 단위)을 초과한 세션의 클라이언트와의 접속을 해제한다.
    {-c cli_id}클라이언트에게 부여한 ID 번호로 접속을 해제한다. ID 번호는 반드시 설정해야 한다.
    {-A}모든 CLH에 접속되어 있는 클라이언트와의 접속을 해제한다.

5.5.11. logstart / logend

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

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

  • 사용 방법

    • 로그 처리시작(logstart)

      $$1 tmax1 (tmadm): logstart filename
      항목설명
      filename로그 파일명을 설정한다.
    • 로그 처리 종료(logend)

      $$1 tmax1 (tmadm): logend

5.5.12. chtrc

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

  • 사용 방법

    chtrc [-g svgname |-v server| -i sprno]] -s newspec 
    옵션설명
    [-g svgname]서버 그룹의 스펙을 변경하는 경우 설정한다.
    [-v server]서버의 스펙을 변경하는 경우 설정한다.
    [-i sprno]서버 프로세스의 스펙을 변경하는 경우 설정한다.
    -s newspec변경할 스펙을 지정한다.
  • 사용예제

    • 서버 스펙 변경(-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.13. chlog

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

  • 사용 방법

    $$1 tmaxs1 (tmadm) : chlog [-t | -c | -v [server_name] | -g [server_group_name]|-m] 
                                -l [loglvl]
    옵션설명
    [-t]TMM의 로그 레벨을 설정한다.
    [-c]CLH의 로그 레벨을 설정한다.
    [-v [server_name]]지정된 서버에 대한 로그 레벨을 설정한다.
    [-g [server_group_name]]지정된 서버 그룹에 대한 로그 레벨을 설정한다.
    [-m]TMS에 대한 로그 레벨을 설정한다.
    -l [loglvl]

    실제 로그 레벨을 설정한다. 다음 중에 하나를 선택한다. 오른쪽으로 설정할수록 더 자세한 로그 확인이 가능하다.

    COMPACT, BASIC, DETAIL, DEBUG1, DEBUG2, DEBUG3, DEBUG4

  • 예제

    • TMM의 동적 로그 레벨 변경(-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.5.14. 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] 
                       <upper-global-xid><lower-global-xid>
    항목설명
    [-w]도메인 서브 트랜잭션일 경우 사용한다.
    [-y]txcommit / txrollback의 확인 과정을 거치지 않는다.
    upper-global-xid처리하고자 하는 xid의 gtid의 앞의 4Byte 이다.
    lower-global-xid처리하고자 하는 xid의 gtid의 뒤의 4Byte 이다.

주의

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

5.5.15. wsgwreload

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

  • 사용 방법

    $$1 tmax1 (tmadm): wsgwreload [-i svrid[svrid]]
    옵션설명
    [ -i svrid [ svrid]]적용한 svrid 리스트를 입력한다.

5.5.16. restart

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

  • 사용 방법

    $$1 tmax1 (tmadm): restart [-v[server_name]] [-g[server_group_name]]
    옵션설명
    [-v[server_name]]적용한 서버를 재기동한다.
    [-g[server_group_name]]적용한 서버그룹의 서버들을 재기동한다.
  • 예제

    • 다음은 사용한 예제이다.

      $$2 tmaxc1 (tmadm): restart -v svr01021 
      >> suspend ok 
      >> down ok 
      >> boot ok 
      >> resume ok 
      >> reboot svr svr01021 finished
      
      
      $$2 tmaxc1 (tmadm): restart -g svg1 
      >> suspend ok
      >> down ok 
      >> boot ok 
      >> resume ok 
      >> reboot svr svr01021 finished 
      >> suspend ok 
      >> down ok 
      >> boot ok 
      >> resume ok 
      >> reboot svr svr01022 finished

5.5.17. notify_reconnect_clh

notify_reconnect_clh 명령어는 현재 기동되어 있는 특정 서버 프로세스에게 특정 CLH로 재접속하라는 통지를 전달한다. 이 통지를 받은 서버 프로세스는 해당 CLH와의 연결이 해제되어 있다면 재접속을 시도한다. 축약 명령어는 nrc 이다.

  • 사용 방법

    $$1 tmax1 (tmadm): nrc [clh_index] [spri_index ]
    옵션설명
    [clh_index]재접속할 CLH의 번호를 지정한다. CLH 번호는 0번부터 시작한다.
    [spri_index]재접속 통지할 서버 프로세스의 spri 를 지정한다.
  • 예제

    • 다음은 사용한 예제이다.

      $$2 tmaxc1 (tmadm): nrc 0 42
      >> clh reconnect ok
      
      $$2 tmaxc1 (tmadm): nrc 0 -1
      >> error clh reconnect