제6장 WebtoB 관리

내용 목차

6.1. wsadmin 콘솔 관리자 프로그램
6.1.1. 환경정보
6.1.2. 동작 상태 정보
6.1.3. 서버 프로세스 중지 및 재개
6.1.4. 적체 해소
6.1.5. 설정값 동적 변경
6.1.6. 클라이언트 연결해제
6.1.7. 기타
6.2. wsmon 콘솔 모니터링 프로그램
6.3. 명령어
6.3.1. wscfl
6.3.2. wsuncfl
6.3.3. wsgst
6.3.4. wsracd
6.3.5. wsmkppd

WebtoB는 시스템 동작 중 각종 상태 정보 확인, 제어 등의 관리기능을 제공한다. 예를 들어 WebtoB 시스템의 종료 및 기동의 절차를 거치지 않고도 현재 환경설정에 대한 정보를 확인해 보고 이를 동적으로 변경할 수 있다. 또한 제공되는 서비스들 중 특정 서비스에 대하여 현재 처리 상태 즉, 몇 건의 서비스를 처리해 왔으며, 평균 처리시간이 얼마나 되며, 몇 건의 요청이 대기하고 있는지 등의 정보를 확인할 수 있다.

WebtoB는 이와 같은 기능들을 콘솔 관리자 프로그램 wsadmin과 브라우저를 위한 WebAdmin을 통해서 제공한다. 본 장에서는 WebtoB 관리를 위해 제공하는 프로그램과 명령어에 대해서 설명한다.

6.1. wsadmin 콘솔 관리자 프로그램

wsadmin은 텍스트 기반의 관리환경을 제공한다. 항상 프롬프트(prompt) 상태로 대기 중이다가 입력되는 명령어를 해석하여 이를 실행하게 된다.

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

$ wsadmin

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

--- Welcome to WebtoB Admin (Type "quit" to leave) --- 
$$1 webtob (wsadm) [2016-02-03T15:07:52]:

wsadmin 툴에서 사용할 수 있는 명령어들의 도움말을 조회할 때는 'help <명령어>'가 사용된다.

$$2 webtob (wsadm) [2016-02-03T15:08:07]: help st 
Summary: stat, st: thread(process) and service state statistics
Usage: stat (st) -v [servername] | -j [jsvservername] | -p [sprname] |
                 -s [servicename] | -rpg [rpgname] | -rp [rproxyname] |
                 -h [hthno] | -t | - T 
                 -v [servername1,servername2,..] : status for each Server
                 -j [jsvservername1, jsvservername2,..] : status for each JSV Server(Jengine)
                 -p [sprname1,sprname2,..] : status for each Server Process
                 -s [servicename1,servicename2,..] : status for each Service
                 -rpg [rpgname1,rpgname2,..] : status for each ReverseProxyGroup
                 -rp [rproxyname1,rproxyname2,..] : status for each ReverseProxy
                 -h [hthno] : statistics of each HTH
                 -t : statistics of each HTH threads
                 -T : statistics of HTH threads group

wsadmin 툴을 종료하기 위해서는 quit (q) 명령을 사용한다.

$$3 webtob (wsadm) [2016-02-03T15:10:16]: quit

다음은 wsadmin이 제공하는 명령어들이다.

명령어약자설명
cacherefresh(cr)HTTP 응답 캐시에 저장된 응답을 삭제한다.
cachelistHTTP 응답 캐시에 저장된 응답들의 정보를 출력한다.
cliinfo(ci)접속 웹 브라우저를 확인한다.
clilisten(cl)WebtoB의 클라이언트의 Listen Port를 제어한다.
config(cfg)환경설정 내용을 조회한다.
discon(ds)접속 중인 클라이언트 연결을 강제로 해제한다.
history(hist)최근 수행한 50개 명령을 조회한다.
help(h)도움말을 조회한다.
hthmem HTH의 메모리 사용 내역을 파일에 기록한다.
ll 로그 레벨을 동적으로 변경한다.
logend(loge)logging을 종료한다.
logstart(logs)logging을 시작한다.
logsearch 로그 파일의 내용을 검색한다.
patchinfo 릴리즈된 이후 패치된 정보를 조회한다.
qpurge(qp)큐에 적체된 요청을 삭제한다.
quit(q)wsadmin을 종료한다.
rebootsvr(rbs)서버 프로그램을 교체한다.
repeat(r)명령어를 반복한다.
restat 서버 프로세스의 통계 정보를 초기화한다.
resume(rs)중지된 서버 프로세스를 재개한다.
set 현재 설정된 환경값을 동적으로 변경한다.
stat(st)프로세스, 스레드 및 서비스 상태에 대한 통계를 조회한다.
suspend(sp)동작 중인 서버 프로세스를 중지한다.
svrinfo(si)서버 정보를 확인한다.
webtobinfo(wi)WebtoB 시스템의 정보를 확인한다.
wsboot(boot)WebtoB를 시작한다. wsboot와 동일하다.
wsdown(down)WebtoB를 종료한다. wsdown과 동일하다.
! 직전 명령어를 반복한다.

6.1.1. 환경정보

6.1.1.1. webtobinfo (wi)

WebtoB 시스템의 환경정보를 조회한다. 버전, 최대 사용자수, 사용 만료기한 정보 등을 확인할 수 있다.

  • 사용법

    > wi
  • 예제

    $$1 webtob (wsadm) [2016-02-03T15:12:27]: wi
    
    License: CLOUD Enterprise edition
    Version=WebtoB 5.0 SP 0 Fix #0 Linux-K2.6_x86 FD16384 B41 epoll 2016/02/03
    
             maxuser = UNLIMITED, 
             node_count = 1, 
             svgrpcount = 0, 
             svr_count = 0, svc_alloc_count = 512
    
    WebtoB All Node Info: node_count = 1: 
    --------------------------------------------------------------------------
      no   name     nodeport  racport  shmkey  shmsize0 shmsize1 shmsize2 hth 
    --------------------------------------------------------------------------
       0   webtob     7777     3333    196608    200360  1978068     1748   1

6.1.1.2. config (cfg)

현재 동작 중인 시스템의 환경정보를 조회한다. 즉, 환경 파일에서 정의된 도메인, 노드, 서버 그룹, 서버, 서비스별로 기본값까지 포함한 모든 환경정보를 확인할 수 있다.

  • 사용법

    > config [-d][-n][-vh VHOST 이름][-g SVRGROUP 이름][-v SERVER 이름]
           [-s SERVICE 이름][-dir DIRECTORY 이름][-u URI 이름][-a ALIAS 이름]
           [-l LOGGING 이름][-e EXT 이름][-ssl SSL 이름][-pssl PROXY_SSL 이름]
           [-tcpgw TCPGW 이름][-rproxy REVERSE_PROXY 이름]
           [-rpg REVERSE_PROXY_GROUP 이름][-ll LOGLEVEL 이름][-headers HEADERS 이름]
           [-access ACCESS 이름][-pc PRECEDING_COMMAND 이름]
           [-t HTH_THREAD 이름]
    옵션설명
    [-d]DOMAIN 절을 설정한다.
    [-n]NODE 절을 설정한다.
    [-vh VHOST 이름]VHOST 절 전체 또는 지정한 이름의 VHOST를 설정한다.
    [-g SVRGROUP 이름]SVRGROUP 절 전체 또는 지정한 이름의 서버 그룹을 설정한다.
    [-v SERVER 이름]SERVER 절 전체 또는 지정한 이름의 서버를 설정한다.
    [-s SERVICE 이름]SERVICE 절 전체 또는 지정한 이름의 서비스를 설정한다.
    [-dir DIRECTORY 이름]DIRECTORY 절 전체 또는 지정한 이름의 디렉터리를 설정한다.
    [-u URI 이름]URI 절 전체 또는 지정한 이름의 URI를 설정한다.
    [-a ALIAS 이름]ALIAS 절 전체 또는 지정한 이름의 ALIAS를 설정한다.
    [-l LOGGING 이름]LOGGING 절 전체 또는 지정한 이름의 LOGGING을 설정한다.
    [-e EXT 이름]EXT 절 전체 또는 지정한 이름의 EXT를 설정한다.
    [-ssl SSL 이름]SSL 절 전체 또는 지정한 이름의 SSL을 설정한다.
    [-pssl PROXY_SSL 이름]PROXY_SSL 절 전체 또는 지정한 이름의 PROXY_SSL을 설정한다.
    [-tcpgw TCPGW 이름]TCPGW 절 전체 또는 지정한 이름의 TCP 게이트웨이를 설정한다.
    [-rproxy REVERSE_PROXY 이름]REVERSE_PROXY 절 전체 또는 지정한 이름의 REVERSE_PROXY를 설정한다.
    [-rpg REVERSE_PROXY_GROUP 이름]REVERSE_PROXY_GROUP 절 전체 또는 지정한 이름의 REVERSE_PROXY_GROUP을 설정한다.
    [-ll LOGLEVEL 이름]LOGLEVEL 절 전체 또는 지정한 이름의 LOGLEVEL을 설정한다.
    [-headers HEADERS 이름]HEADERS 절 전체 또는 지정한 이름의 HEADERS를 설정한다.
    [-access ACCESS 이름]ACCESS 절 전체 또는 지정한 이름의 ACCESS를 설정한다.
    [-pc PRECEDING_COMMAND 이름]PRECEDING_COMMAND 절 전체 또는 지정한 이름의 PRECEDING_COMMAND를 설정한다.
    [-t HTH_THREAD 이름]HTH_THREAD 절 전체 또는 지정한 이름의 HTH_THREAD를 설정한다.
  • 예제

    다음은 NODE 절 환경설정을 출력한 예제이다. NODE 절의 설정 항목에 대한 자세한 설명은 “3.3.1. 설정 항목”을 참고한다.

    $$9 webtob (wsadm) [2016-02-03T15:14:46]: cfg -n
        NODE(0): Name = webtob,
             HostName = "webtob",
             DocRoot = "/root/webtob_docroot/",
             SvrRoot = "/root/wb-5000-clean/",
             Method = "GET, POST, HEAD, OPTIONS",
             ShmKey = 54000,
             Hth = 1,
             HthQTimeout(hqt) = 0,
             NodePort = 7777,
             Port = "8080",
             JsvPort = 9999,
             ...
             Logging = "log1",
             ErrorLog = "log2",
             SysLog = "syslog",
             ...
             CheckURL = Y,
             CheckURLTo = "euc-kr",
             CheckURLFrom = "utf-8",
             SSIMaxDepth = 16

6.1.1.3. history (hist)

사용된 명령어를 보여준다.

  • 사용법

    > history
  • 예제

    $$5 webtob (wsadm) [2016-02-03T15:14:47]: history
            5: history
            4: ci -s 
            3: ci 
            2: ci -s
            1: ci

6.1.1.4. !

직전 명령어를 반복한다. !n과 같이사용하면 history에 나타난 과거 명령어 중 특정 명령어를 (n) 반복 수행한다.

  • 사용법

    > !
  • 예제

    $$6 webtob (wsadm) [2016-02-03T15:14:49]: !4 ci -s
           Clients  Unique IPs  Dropped
           -------  ----------  -------
    HTH 0        0           0        0
      All        0           0        0

6.1.2. 동작 상태 정보

6.1.2.1. cliinfo (ci)

현재 접속된 클라이언트(주로 웹 브라우저)의 환경정보를 조회한다. 현재 상태(status), 접속 IP 주소, 처리 건수(count)와 같은 정보를 확인할 수 있다.

  • 사용법

    > ci [-s][-S][-vh Virtual Host 이름][-h HTH 번호]

    옵션설명
    [-s]전체 연결된 클라이언트들의 간단한 통계값을 출력한다.
    [-S]연결된 각각의 클라이언트 정보를 출력한다.
    [-vh Virtual Host 이름]지정한 Virtual Host에 연결된 클라이언트들의 정보를 출력한다.
    [-h HTH 번호]지정한 HTH에 연결된 클라이언트들의 정보를 출력한다.
  • 예제

    • 옵션 없이 사용하는 경우

      ci를 옵션 없이 사용하면 다음 같은 결과를 출력한다. 하나의 항목이 1개의 클라이언트를 의미한다.

      $$1 webtob (wsadm) [2016-02-03T15:14:56]: ci
      
      HTH   0:   RDY
      ------------------------------------------------------------------------------------
       no   status count idle    local_ipaddr:port    remote_ipaddr:port  spri   user ssl
      ------------------------------------------------------------------------------------
          0    RDY     0    2    172.16.1.107:8080     172.16.1.100:1951    -1         N
          0    RUN     4    0    172.16.1.107:8080     172.16.1.202:60572   24         N 
          1    QED     1    0    172.16.1.107:8080     172.16.1.202:60600   -1         N
          2    RUN     4    0    172.16.1.107:8080     172.16.1.202:60575   26         N
          3    RUN     0    0    172.16.1.107:8080     172.16.1.202:60601   28         N
          4    RUN     4    0    172.16.1.107:8080     172.16.1.202:60577   22         N
          5    RUN     0    0    172.16.1.107:8080     172.16.1.202:60594   23         N
          6    QED     1    0    172.16.1.107:8080     172.16.1.202:60598   -1         N
          7    RUN     0    0    172.16.1.107:8080     172.16.1.202:60596   25         N
          8    QED     1    0    172.16.1.107:8080     172.16.1.202:60597   -1         N
          9    QED     2    0    172.16.1.107:8080     172.16.1.202:60595   -1         N
         10    RUN     4    0    172.16.1.107:8080     172.16.1.202:60584   21         N
         11    QED     2    0    172.16.1.107:8080     172.16.1.202:60592   -1         N
         12    RUN     3    0    172.16.1.107:8080     172.16.1.202:60587   29         N
         13    RUN     4    0    172.16.1.107:8080     172.16.1.202:60588   30         N
         14    QED     1    0    172.16.1.107:8080     172.16.1.202:60599   -1         N
         15    RUN     1    0    172.16.1.107:8080     172.16.1.202:60593   27         N
      -------------------------------------------------------------------------------
       HTH     RDY   QED   RUN   ETC total
         0       0     6    10     0    16
      -------------------------------------------------------------------------------
      
      -------------------------------------------------------------------------------
       HTH     RDY   QED   RUN   ETC total
      -------------------------------------------------------------------------------
         0       0     6    10     0    16
      -------------------------------------------------------------------------------
       Total     0     6    10     0    16
      -------------------------------------------------------------------------------

      다음은 출력 항목에 대한 설명이다.

      출력항목설명
      status

      서버 내부의 클라이언트 상태이다.

      • RDY : 클라이언트로부터 요청을 받는 중이다.

      • RUN : 클라이언트의 요청이 서버에서 처리 중이다.

      • QED : 클라이언트로부터 요청을 받고 처리해야 하는 서버는 확인되었지만 해당 서버가 모두 요청을 처리 중인 상태여서 서버 내 큐에 잠시 대기 중인 상태이다.

      count해당 클라이언트가 전송한 요청 수이다.
      idle해당 클라이언트가 어떠한 데이터도 주고받지 않고 있는 상태로 지속된 시간이다.

      local_ipaddr:port,

      remote_ipaddr:port

      서버와 클라이언트 IP:PORT이다.
      spri서버와 클라이언트 IP 주소이다.
      user

      해당 클라이언트가 일반적인 HTTP 클라이언트가 아닌 경우 어떠한 종류로 사용되고 있는지 알려주는 정보이다.

      • tcpgw-c : TCPGW 처리 중인 클라이언트이다.

      • tpcgw-s : TCPGW 처리 중인 서버이다.

      • conn-c : CONNECT 메소드 요청 처리 중인 클라이언트이다.

      • conn-s : CONNECT 메소드 요청 처리 중인 서버이다.

      • rproxy-s : Reverse Proxy에 연결된 서버이다.

      • rproxy-ws-c : Reverse Proxy에서 WebSocket 사용 중인 클라이언트이다.

      • rproxy-ws-s : Reverse Proxy에서 WebSocket 사용 중인 서버이다.

      • internal-c : 내부 redirect 등에 사용 중인 클라이언트이다.

      ssl해당 클라이언트가 SSL로 연결되어 있는지 여부이다.
    • -s 옵션 사용한 경우

      다음과 같이 -s를 사용하면 전체 클라이언트 수와 고유 IP(unique IP) 수, HTH에 등록되지 못하고 연결 종료된 클라이언트 수가 출력된다.

      $$1 webtob (wsadm) [2016-02-03T15:15:23]: ci -s
             Clients  Unique IPs  Dropped
             -------  ----------  -------
      HTH 0       16           0        0
        All       16           0        0

6.1.2.2. svrinfo (si)

현재 동작 중인 각 서버의 정보를 조회한다.

  • 사용법

    > si [서버 이름, 서버 이름,..]
    옵션설명
    [서버 이름, 서버 이름,..]모든 서버나 지정된 서버의 정보를 출력한다.
  • 예제

    다음은 명령어를 실행하는 경우 출력되는 정보이다.

    $$1 webtob (wsadm) [2016-02-03T15:17:20]: si
    
    ------------------------------------------------------------------------------------------
     hth   svrname (svri)   status      reqs     count cqcnt    aqcnt qpcnt emcnt rscnt rbcnt
    ------------------------------------------------------------------------------------------
       0  MyGroup    (  1)   RDY          12        12     0        0     0     0     0     0
       0  cgi        (  2)   RDY           0         0     0        0     0     0     0     0
       0  php        (  3)   RDY         352       352     0        0     0     0     0     0

    다음은 출력 항목에 대한 설명이다.

    출력항목설명
    svrname환경설정의 서버 이름이다.
    (svri)내부적으로 관리되는 서버별 인덱스 번호이다.
    status

    서버 내부의 클라이언트 상태이다.

    • RDY : 서버가 요청을 처리할 수 있다. WebtoB와 연결된 서버 프로세스들이 존재한다.

    • NRDY : 요청을 처리할 수 없다. WebtoB와 연결된 서버 프로세스가 없다.

    • BLK : 서버가 관리자 명령에 따라 suspend된 상태이다. 서버는 요청을 처리할 수 없다.

    reqs해당 서버에 보내진 요청 수이다.
    count요청처리 수이다.
    cqcnt현재 큐에서 대기 중인 요청 수이다.
    aqcnt현재까지 큐에 대기했던 요청 수(cqcnt의 cumulative 값이다)이다.
    qpcnt큐에 대기 중이던 요청이 timeout 또는 qp 명령 등으로 인해 큐에서 제거된 요청 수이다.
    emcnt큐에 대기 중인 요청 수가 MaxQCount를 넘어간 횟수이다.
    rscnt해당 서버의 비정상 종료로 인한 restart 횟수이다.
    rbcnt해당 서버의 rbs 명령을 통한 reboot 횟수이다.

6.1.2.3. stat (st)

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

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

  • 사용법

    > st [-v 서버 이름,서버 이름,..][-j JSV 서버 이름,JSV 서버 이름,..]
         [-p 서버 프로세스 이름,서버 프로세스 이름,..]
         [-rpg Reverse Proxy Group 이름,Reverse Proxy Group 이름,..]
         [-rproxy Reverse Proxy 이름,Reverse Proxy 이름,..]
         [-tcpgw TCPGW 이름,TCPGW 이름,..]
         [-s 서비스 이름,서비스 이름,..][-h HTH 번호]
         [-T][-t]
    옵션설명
    [-v 서버 이름, 서버 이름,..]서버들의 상태를 출력한다. svrinfo와 동일하다.
    [-j JSV서버 이름, JSV서버 이름,..]JSV 서버들의 통계정보를 출력한다.
    [-p 서버 프로세스 이름, 서버 프로세스 이름,..]개별 서버 프로세스들의 상태를 출력한다.
    [-rpg Reverse Proxy Group 이름, Reverse Proxy Group 이름,..]Reverse Proxy Group의 통계정보를 출력한다.
    [-rproxy Reverse Proxy 이름, Reverse Proxy 이름,..]Reverse Proxy의 각 커넥션별 상태를 출력한다.
    [-tcpgw TCPGW 이름, TCPGW 이름,..]TCPGW의 각 커넥션별 상태를 출력한다.
    [-s 서비스 이름, 서비스 이름,..]서비스 상태를 출력한다.
    [-h HTH 번호]HTH 프로세스들의 내부 통계자료를 출력한다.
    [-T]HTH 프로세스 내 각 스레드 타입별 내부 통계자료를 출력한다.
    [-t]HTH 프로세스 내 각 스레드들의 내부 통계자료를 출력한다.
  • 예제

    • -p 옵션 사용

      다음은 -p 옵션을 사용해서 서버 프로세스들의 정보를 출력한 예제이다.

      $$1 webtob (wsadm) [2016-02-03T15:43:22]: st -p
      
      HTH 0(23786): RDY
       --------------------------------------------------------------------------------------------- 
       svr_name   svgname     spr_no(pid)  status      reqs     count    avg(rt)  clid svc v contime
       --------------------------------------------------------------------------------------------- 
       php        phpg        220(  23789)   RDY         0         0   0.0000( 0)   -1   - 0   14187
       ...
       MyGroup1   jsvg        120(      0)   RDY         0         0   0.0000( 0)   -1   - 1   14160
                    0 jengineid(ZG9tYWluMS9hZG1pblNlcnZlcg==)(domain1/adminServer)
       MyGroup1   jsvg        121(      1)   RDY         0         0   0.0000( 0)   -1   - 1   14153
                    0 jengineid(ZG9tYWluMS9hZG1pblNlcnZlcg==)(domain1/adminServer)
       ...

      다음은 출력 항목에 대한 설명이다.

      출력항목설명
      svr_name환경설정 SERVER 절의 서버 이름이다.
      svgnameSVRGROUP 절의 서버 그룹 이름이다.
      spr_noWebtoB 내부에서 할당한 번호이다.
      pid프로세스의 ID이다. (JSV 서버인 경우 각 커넥션별 worker thread가 보내준 ID)
      status

      현재상태를 나타낸다.

      • RDY : 프로세스가 새로운 요청을 기다리고 있다.

      • NRDY : 요청을 처리할 수 없다. WebtoB와 연결된 서버 프로세스가 없다.

      • RUN : 프로세스가 요청을 처리하고 있다.

      • BRUN : 프로세스가 요청에 대한 응답을 전송하는 중이다. 하지만 Flow Control로 인해 잠시 대기 중인 상태이다.

      reqs해당 프로세스로 보내진 요청 수이다.
      count해당 프로세스가 처리한 요청 수이다.
      avg평균 처리시간 (초)이다.
      (rt)현재 처리 중인 요청이 사용한 시간이다.
      clid해당 프로세스가 처리 중인 client ID이다.
      svc요청이 속하는 EXT나 URI 절의 서비스 이름이다.
      vJEUS 연결인 경우 WJP(WebtoB-JEUS Protocol) version 정보를 표시한다. 내부 서버 프로세스인 경우 0으로 표시한다.
      contime해당 프로세스가 HTH에 연결을 맺은 후 지난 시간(HTH에 접속된 시간)이다.
    • 상태 정보를 여러 번 주기적으로 출력

      반복적인 명령어 수행은 상태 정보를 모니터링할 뿐 아니라 업무수행에 대한 디버깅에도 많은 도움을 줄 수 있다.

      다음은 5초간의 간격을 두고 ‘st –s’를 30번 수행하라는 의미이다.

      $$10 webtob (wsadm(wsmon)) [2009/10/22:12:37:56]: r -i 5 -k 30 st -s 

      다음은 5초간의 간격을 두고 ‘st –p’를 30초간 수행하는 의미이다.

      $$10 webtob (wsadm(wsmon)) [2009/10/22:12:37:56]: r -i 5 -f 30 st -p
    • -tcpgw 옵션 사용

      다음은 -tcpgw 옵션을 사용해서 각 TCPGW 정보를 출력한 예제이다.

      $$4 webtob (wsadm) [2018-07-19T12:08:08]: st -tcpgw
      
         ---------------------------------------------------------------------
          hth  (tcpgwi)tcpgwname    count   avg   cons   remote_ipaddr:port
         ---------------------------------------------------------------------
           0    ( 0/ 0)tcpgw1         2    15.7293  0   127.0.0.1:8088
           0    ( 1/ 0)tcpgw2         0    0.0000   0   192.168.0.1:18088
           0    ( 1/ 1)tcpgw2         0    0.0000   0   192.168.0.1:28088
           0    ( 1/ 2)tcpgw2         0    0.0000   0   192.168.0.1:38088
           0    ( 1/ 3)tcpgw2         0    0.0000   0   192.168.0.1:48088
           0    ( 1/ 4)tcpgw2         0    0.0000   0   192.168.0.1:58088
       ...

      다음은 출력 항목에 대한 설명이다.

      출력항목설명
      hthhth의 번호이다.
      tpcgwname환경설정의 TCPGW 이름이다.
      countTCP connection을 처리한 횟수이다.
      avgTCP connection이 지속된 시간이다.
      cons연결된 connection 수이다.
      remote_ipaddr:port클라이언트의 요청을 처리할 서버의 IP주소와 포트 번호이다.
    • -T 옵션 사용

      다음은 -T 옵션을 사용해서 각 스레스드들의 정보를 출력한 예제이다.

      $$1 webtob (wsadm) [2016-02-03T15:45:17]: st -T
      
      HTH 0: RDY
         ------------------------------------------------------------------------
         no  thread_type   status   threads        atasks        ptasks    qtasks
         ------------------------------------------------------------------------
          0   ACCESSLOG      RDY          1            18            18         0
          1   WORKER         RDY         12           401           401         0
          2   SENDFILE       RDY          4             6             6         0
       ...

      다음은 출력 항목에 대한 설명이다.

      출력항목설명
      thread_type각 스레드의 타입이다.
      status

      현재상태를 나타낸다.

      • RDY : 스레드가 새로운 작업을 기다리고 있다.

      • NRDY : 작업을 처리할 수 없다.

      threadsthread_type에 해당하는 스레드 수 이다.
      atasks전체 작업 수 이다.
      ptasks현재까지 처리된 작업 수 이다.
      qtasks아직 처리되지 않고 남아있는(큐잉된) 작업 수 이다.
    • -t 옵션 사용

      다음은 -t 옵션을 사용해서 각 스레드들의 정보를 출력한 예제이다.

      $$1 webtob (wsadm) [2016-02-03T15:44:57]: st -t
      
      HTH 0: RDY
      -------------------------------------------------------------------------------
      no  thread_id     status   elapsed     atasks     ptasks    qtasks    task_type
      -------------------------------------------------------------------------------
       0   ACCESSLOG      RDY          4         18         18         0         NONE
       1   WORKER001      RUN          0         34         33         1     SSLWRITE
       2   WORKER002      RDY         31         34         34         0         NONE
       3   WORKER003      RDY         31         34         34         0         NONE
       4   WORKER004      RDY         31         34         34         0         NONE
       5   WORKER005      RDY         31         34         34         0         NONE
       6   WORKER006      RDY         31         33         33         0         NONE
       7   WORKER007      RDY         31         33         33         0         NONE
       8   WORKER008      RDY         31         33         33         0         NONE
       9   WORKER009      RDY         31         33         33         0         NONE
      10   WORKER010      RDY         31         33         33         0         NONE
      11   WORKER011      RDY         31         33         33         0         NONE
      12   WORKER012      RDY         31         33         33         0         NONE
      13   SENDFILE001    RDY          4          2          2         0         NONE
      14   SENDFILE002    RDY          4          1          1         0         NONE
      15   SENDFILE003    RDY          4          1          1         0         NONE
      16   SENDFILE004    RDY          4          2          2         0         NONE
       ...

      다음은 출력 항목에 대한 설명이다.

      출력항목설명
      thread_id각 스레드의 이름이다.
      status

      현재상태를 나타낸다.

      • RDY : 스레드가 새로운 작업을 기다리고 있다.

      • NRDY : 작업을 처리할 수 없다.

      • RUN : 스레드가 작업을 처리하고 있다.

      elapsed작업시작 또는 작업완료 후 지나간 시간이다.
      atasks전체 작업 수 이다.
      ptasks현재까지 처리된 작업 수 이다.
      qtasks아직 처리되지 않고 남아있는(큐잉된) 작업 수 이다.
      task_type

      현재 스레드에서 처리 중인 작업이다.

      작업을 처리하고 있지 않은 경우 NONE이 출력된다. 스레드가 깨어났으나 아직 작업을 시작하지 않은 경우 status는 RUN이고 task_type은 NONE으로 출력된다.

6.1.3. 서버 프로세스 중지 및 재개

6.1.3.1. suspend (sp)

동작 중인 서버 프로세스의 활동을 중지시킨다. 중지된 서버 프로세스는 현재 처리 중인 서비스를 정상 완료한 후 더 이상의 동작은 중지하고, 큐에 있는 서비스들은 대기상태가 된다.

응용 서버 프로그램 오류 등으로 더 이상의 업무 처리가 불가능하여 이를 해결하기 위해 동작 중인 서버 프로세스를 중지시킬 필요가 발생할 수 있다. 이와 같이 원인을 알 수 없는 문제로 인하여 요청 처리를 중지시키고 추가적인 작업을 필요로 하는 경우에 유용하게 사용할 수 있는 기능이다.

  • 사용법

    > suspend [-v 서버 이름]
    옵션설명
    [-v 서버 이름]지정된 서버를 중지한다.
  • 예제

    다음은 PHP 서버를 중지하는 예제이다. "st -v"를 사용해서 서버 상태를 확인하면 BLK으로 변경되었음을 확인한다.

    $$1 webtob (wsadm) [2016-02-03T15:56:57]: suspend -v php
    Server(php) is supended
    $$2 webtob (wsadm) [2016-02-03T15:57:07]: st -v
    
    ------------------------------------------------------------------------------------------
     hth   svrname (svri)   status      reqs     count cqcnt    aqcnt qpcnt emcnt rscnt rbcnt
    ------------------------------------------------------------------------------------------
       ...
       0  php        (  3)   BLK         539       539     0      403     0     0     0     0
       ...

6.1.3.2. resume (rs)

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

  • 사용법

    > resume [-v 서버 이름]
    옵션설명
    [-v 서버 이름]지정된 서버를 처리 가능 상태로 변경한다.
  • 예제

    다음은 중지된 PHP 서버를 재개하는 예제이다. "st -v"를 사용해서 서버 상태를 확인하면 RDY로 변경된다.

    $$3 webtob (wsadm) [2016-02-03T15:57:27]: st -v resume -v php
    Server(php) is resumed
    $$4 webtob (wsadm) [2016-02-03T15:57:37]: st -v
    ------------------------------------------------------------------------------------------
     hth   svrname (svri)   status      reqs     count cqcnt    aqcnt qpcnt emcnt rscnt rbcnt
    ------------------------------------------------------------------------------------------
       ...
       0  php        (  3)   RDY         539       539     0      403     0     0     0     0
       ...

6.1.4. 적체 해소

6.1.4.1. qpurge (qp)

업무의 폭주 현상이 발생하여 많은 업무가 적체되어 정상적으로 거래를 처리하지 못하는 경우 현재 큐에 적체되어 있는 서비스 요청을 삭제해서 원활한 업무수행을 유도하는 기능이다. 하루에도 수십만 건의 업무를 처리하는 은행이나 관공서에서 유용하게 사용될 수 있는 기능으로서 삭제된 업무는 클라이언트의 재요청을 통하여 다시 처리될 수 있다. WebtoB에서는 서버 프로세스별로 큐를 관리함으로써 관리자는 특정 서버별로 큐를 삭제할 수 있다. 따라서 특정 업무별로 처리가 가능하며 이는 타 업무의 효과적인 수행에도 도움을 줄 수 있다.

qp를 통해 삭제된 서비스는 클라이언트에게 다음의 에러를 전송한다.

503 Service Temporarily Unavailable.

  • 사용법

    > qpurge [-v 서버 이름]
    옵션설명
    [-v 서버 이름]지정된 서버의 큐에 남아있는 요청들을 제거한다.
  • 예제

    다음은 PHP 서버의 큐에 대기하고 있는 요청들을 제거하는 예제이다. purged_count는 6개의 요청이 제거되었다는 결과를 출력한다.

    $$11 webtob (wsadm) [2016-02-03T15:58:52]: qpurge -v php
    q for svr php is purged: purged_count = 6

6.1.5. 설정값 동적 변경

6.1.5.1. set

현재 설정되어 있는 환경 파일의 설정값을 동적으로 변경할 수 있는 명령어로 사용법은 다음과 같다. 변경 가능 항목은 wsadmin의 cfg 명령어를 통해서 확인할 수 있다.

  • 사용법

    > set [-n 노드 이름][-vh VHOST 이름][-g SVRGROUP 이름][-v 서버 이름][-s 서비스 이름]
    옵션설명
    [-n 노드 이름]NODE 절을 설정한다.
    [-vh VHOST 이름]지정한 이름의 VHOST를 설정한다.
    [-g SVRGROUP 이름]지정한 이름의 서버 그룹을 설정한다.
    [-v 서버 이름]지정한 이름의 서버를 설정한다.
    [-s 서비스 이름]지정한 이름의 서비스를 설정한다.
  • 예제

    다음은 "cfg -v php"를 사용해서 MaxQCount 값을 확인한 후 set을 사용해서 값을 변경하는 예제이다. set 명령 수행 후 값이 100으로 변경된 것을 확인할 수 있다.

    $$10 webtob (wsadm) [2016-02-03T16:01:32]: cfg -v php
        SERVER(3): Name = php,
             SvgName = phpg,
             MinProc = 10,
             MaxProc = 10,
             MaxQCount(mq) = 0,
             ...
    $$11 webtob (wsadm) [2016-02-03T16:01:42]: set -v php mq 100
    new value (100) is set for section = SERVER, name = php, fld = mq
    $$12 webtob (wsadm) [2016-02-03T16:01:52]: cfg -v php
        SERVER(3): Name = php,
             SvgName = phpg,
             MinProc = 10,
             MaxProc = 10,
             MaxQCount(mq) = 100,
             ...

6.1.6. 클라이언트 연결해제

6.1.6.1. discon (ds)

현재 접속되어 있거나 아무 일도 수행하지 않는 클라이언트를 강제로 연결을 해제할 수 있다. 클라이언트 정보를 얻을 수 있는 ci 명령어로 확인 후 사용한다.

  • 사용법

    > discon [-h HTH 번호] -a | -i idle time | -c Client ID [-f]
    옵션설명
    [-h HTH 번호]지정된 HTH에 연결된 클라이언트 연결을 끊는다.
    -a모든 HTH에 연결된 클라이언트 연결을 끊는다.
    -i idle time지정된 시간(초) 이상 경과된 클라이언트 연결을 끊는다.
    -c Client ID지정된 클라이언트(ci가 출력한 클라이언트 ID)를 끊는다.
    [-f]즉시 연결을 해제한다.
  • 예제

    다음은 ci 명령어로 클라이언트 ID를 확인한 후 discon 명령어를 사용해서 15번 클라이언트의 연결을 강제로 끊는 예제이다.

    $$16 webtob (wsadm) [2016-02-03T16:02:42]: ci
    HTH   0:   RDY
    --------------------------------------------------------------------------------
     no   status count idle    local_ipaddr:port    remote_ipaddr:port  spri   user
    --------------------------------------------------------------------------------
       15    RDY     0    2    172.16.1.107:8080     172.16.1.202:36505   -1
       ... 
    
    $$17 webtob (wsadm) [2016-02-03T16:02:55]:  discon -c 15
    client (hth0: 15) is disconnected

6.1.7. 기타

6.1.7.1. cachelist

현재 WebtoB의 HTTP 응답 캐시에 저장된 응답들에 대한 정보를 출력한다. 정보량이 크기 때문에 결과물은 별도 파일에 저장된다.

  • 사용법

    > cachelist
  • 예제

    다음은 요청 "/index.html"에 대한 응답이 캐시에 저장된 것을 보여주는 예제이다. 요청 경로 외 부분은 서버 내부 디버그 용도로만 사용된다.

    $$1 webtob (wsadm) [2016-02-03T16:02:15]:  cachelist
    Cache contents files are created in /root/wb-5000-clean/log/cachelist/. Please check the directory.
    
    생성된 파일 예제:
    0 webtob:8080/index.html 5 0 2016/02/03:14:59:45 10 0 327043 5 2016/02/03:15:48:56 (1253083736)
    Total cached response=1
    Total content length=5

6.1.7.2. cacherefresh (cr)

WebtoB의 HTTP 응답 캐시에 저장된 응답들을 제거한다.

  • 사용법

    > cacherefresh {-a | -h | -i | -j | -r | -u URL}

    옵션설명
    [-a]캐시된 모든 응답을 제거한다.
    [-h]SVRTYPE이 HTML로 처리된 후 캐시된 HTML과 유사 텍스트 응답만 제거한다.
    [-i]SVRTYPE이 HTML로 처리된 후 캐시된 IMAGE 타입 응답만 제거한다.
    [-j]SVRTYPE이 JSV으로 처리된 후 캐시된 응답만 제거한다.
    [-r]Reverse Proxy로 처리된 후 캐시된 응답만 제거한다.
    [-u URL]캐시된 응답 중 URL을 지정하여(fnmatch 방식으로) 매칭된 응답만 제거한다.
  • 예제

    다음은 캐시에 저장된 모든 응답을 제거하는 예제이다.

    $$1 webtob (wsadm) [2016-02-03T16:04:57]:  cacherefresh -a

    다음은 캐시에 저장된 응답 중 "test.domain.com/test.html"을 제거하는 예제이다.

    $$2 webtob (wsadm) [2016-02-03T16:05:07]:  cacherefresh -u test.domain.com/test.html

6.1.7.3. clilisten (cl)

WebtoB가 클라이언트 연결을 받기 위해서 사용하는 Listen Port들을 제거, 생성할 수 있다.

  • 사용법

    > clilisten {on | off}
    옵션설명
    onListen Port들을 생성한다.
    offListen Port들을 제거한다. 제거되면 새로운 클라이언트가 WebtoB로 접속할 수 없다. 이미 HTH와 연결된 클라이언트에 대해서는 (처리 중인 요청을 완료한 후) 연결을 종료한다.
  • 예제

    다음은 Listen Port들을 제거하는 예제이다.

    $$18 webtob (wsadm) [2016-02-03T16:05:17]: clilisten off
    client listen blocked

    다음은 Linux 콘솔에서 Listen Port들을 확인한 결과이다. Listen Port는 8080으로 가정한다.

    [root@webtob ~]# netstat -ant
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State      
    tcp        0      0 0.0.0.0:9090                0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:681                 0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
    ...

    clilisten off를 실행한 후 다시 포트를 확인한다. 8080 포트가 제거된 것을 확인한다.

    [root@webtob ~]# netstat -ant 
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State      
    tcp        0      0 0.0.0.0:9090                0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:681                 0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN
    ...

6.1.7.4. logstart (logs), logend (loge)

실행한 명령들과 출력물을 로그 파일에 기록한다. 로그 파일은 현재 디렉터리에 생성된다.

로그 데이터를 통해 업무 폭주 시간, 불필요한 서버 프로세스, 큐잉 상태 등을 확인하여 전반적인 시스템 분석이 가능하다. logstart가 logging을 시작하고, logend가 logging을 중단한다.

  • 사용법

    > logstart (logs)
    > logend (loge)
  • 예제

    다음 "log.txt" 파일에 st -p의 결과값이 저장된다.

    $$1 webtob (wsadm) [2016-02-03T16:05:55]: logstart log.txt
    logging start ok
    $$2 webtob (wsadm) [2016-02-03T16:05:59]: st -p
    ...
    $$3 webtob (wsadm) [2016-02-03T16:06:05]: logend
    logging end ok
    $$4 webtob (wsadm) [2016-02-03T16:06:25]: 

6.1.7.5. logsearch

지정한 로그 파일의 내용을 검색할 수 있다.

  • 사용법

    > logsearch [keyword] [logfile]
    옵션설명
    [keyword]로그 파일 내에서 검색할 문자열이다. 검색시 대소문자는 무시된다.
    [logfile]

    문자열을 검색할 로그 파일이다. 절대 경로 및 상대 경로를 지원한다.

    • 상대 경로로 입력한 경우 syslog가 저장되는 폴더가 기준 경로이다.

    • 절대 경로로 입력하는 경우 권한이 있는 모든 파일에 접근이 가능하기 때문에 사용에 유의해야 한다.

  • 예제

    다음은 syslog의 내용을 검색하는 예제이다.

    $$1 webtob (wsadm) [2020-08-05T14:58:35]: logsearch successfully system.log_08052020
    [2020-08-05T10:44:16] [HTH(22378)] [I] [HTH-00074] Successfully connected and registered to HTL. HTH is ready to receive client connections.
    [2020-08-05T10:44:16] [HTL(22377)] [I] [HTL-00021] Successfully registered HTH. Start listening for this HTH. index=0, fd=6
    [2020-08-05T14:57:29] [HTH(4901)] [I] [HTH-00074] Successfully connected and registered to HTL. HTH is ready to receive client connections.
    [2020-08-05T14:57:29] [HTL(4900)] [I] [HTL-00021] Successfully registered HTH. Start listening for this HTH. index=0, fd=6

6.1.7.6. ll

LOGLEVEL 설정을 동적으로 변경할 수 있다. 로거 이름, 레벨, 옵션은 “3.24.1. 설정 항목”을 참고한다.

  • 사용법

    > ll [로거 이름][-l level | -o option | -rs seconds | -rf fileSize]
    옵션설명
    [로거 이름]WebtoB가 지원하는 로거를 설정한다.
    [-l level]로그 레벨을 지정된 level로 변경한다.
    [-o option]로거의 옵션을 option으로 변경한다.
    [-rs seconds]로거의 rotateBySeconds 설정을 seconds로 변경한다.
    [-rf fileSize]로거의 rotateByFileSize 설정을 fileSize로 변경한다.
  • 예제

    다음 명령은 ".hth" 로거의 레벨을 DEBUG로 변경한다. 변경된 값은 cfg -ll로 확인할 수 있다.

    $$6 webtob (wsadm) [2016-02-03T16:06:35]: ll .hth -l DEBUG
    Log level is successfully updated. logger=.hth, level=DEBUG, options=

6.1.7.7. patchinfo

릴리즈된 이후 추가 패치를 적용한 경우 패치된 정보를 보여준다.

  • 사용법

    > patchinfo
  • 예제

    다음은 릴리즈된 버전에서 patchinfo 명령을 실행한 예제이다.

    $$1 webtob (wsadm) [2016-02-03T16:07:35]: patchinfo
    
    ----------
    Released (2015/01/29) : 5.0.0.0-B41.0.0 
    ----------

6.1.7.8. rebootsvr (rbs)

현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경하는 경우에 사용한다.

WEBTOB_BKAPPDIR을 환경변수에 지정하고 새로운 프로그램을 지정된 디렉터리에 옮기고 다음의 명령어를 수행한다.

  • 사용법

    > rebootsvr new_file old_file
    옵션설명
    new_file변경된 파일(object file)을 설정한다.
    old_file현재 실행 중인 파일(object file)을 설정한다.

6.1.7.9. repeat (r)

현재 정보를 일정한 시간 간격을 두고 계속 모니터링하는 경우에 사용한다.

  • 사용법

    > repeat [-i ] [-k 횟수| -f ] 명령어

    옵션설명
    [-i ]명령어 반복 주기(초)를 설정한다.
    [-k 횟수]지정한 횟수만큼 반복하고 중지한다.
    [-f ]지정한 시간(초)이 경과되면 반복을 중지한다.
    명령어반복 수행할 명령어를 설정한다.
  • 예제

    다음은 5초간의 간격을 두고 st –s를 30번 수행하도록 하는 예제이다.

    $$9 webtob (wsadm) [2016-02-03T16:08:02]: r -i 5 -k 30 st -p

6.1.7.10. restat

서버 프로세스의 통계 정보를 초기화하는 경우에 사용한다. 해당 명령을 사용하면 관련된 서비스나 서버 프로세스 의 정보가 초기화된다.

  • 사용법

    > restat [-a | -v 서버 이름]

    옵션설명
    [-a]모든 서버 프로세스의 통계 정보를 초기화한다.
    [-v 서버 이름]사용자가 지정한 서버 프로세스의 통계 정보를 초기화한다.
  • 예제

    다음은 "MyGroup"이라는 이름을 가진 서버 프로세스의 통계 정보를 초기화하는 예제이다.

    $$1 webtob (wsadm) [2020-08-11T17:25:07]: restat -v MyGroup

6.2. wsmon 콘솔 모니터링 프로그램

wsmon은 텍스트 기반의 모니터링 환경을 제공한다. 항상 프롬프트(prompt) 상태로 대기 중이다가 입력되는 명령어를 해석하여 이를 실행하게 된다.

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

$ wsmon

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

--- Welcome to WebtoB Mon (Type "quit" to leave) ---
$$1 webtob (wsmon) [2016-02-03T16:08:22]:

wsmon 툴에서 사용할 수 있는 명령어들의 도움말을 조회할 때는 'help <명령어>'가 사용된다.

$$5 webtob (wsmon) [2016-02-03T16:08:29]: help ci
Summary: cliinfo, ci: show client properties
Usage: cliinfo (ci) [-s | -S] [-vh vhostname] [-h hthno]
            -s : summury of the client info
            -S : detail summury of the client info
            -vh vhostname : specify VHOST
            -h hthno : specify a HTH number to view

wsmon 툴을 종료하기 위해서는 quit (q) 명령을 사용한다.

$$1 webtob (wsmon) [2016-02-03T16:08:42]: quit

다음은 wsmon이 제공하는 명령어들이다. 자세한 설명은 각 해당 절의 설명을 참고한다.

명령어약자설명
cachelistHTTP 응답 캐시에 저장된 응답들의 정보 출력한다.
cliinfo(ci)접속 웹 브라우저를 확인한다.
config(cfg)환경설정 내용을 조회한다.
history(hist)최근 수행한 50개 명령을 조회한다.
help(h)도움말을 조회한다.
logend(loge)logging을 종료한다.
logstart(logs)logging을 시작한다.
repeat(r)명령어를 반복한다.
stat(st)프로세스 및 서비스 상태에 대한 통계를 조회한다.
svrinfo(si)서버 정보를 확인한다.
webtobinfo(wi)WebtoB 시스템의 정보를 확인한다.
patchinfo 릴리즈된 이후 패치된 정보를 조회한다.
quit(q)wsmon을 종료한다.
! 직전 명령어를 반복한다.

참고

wsmon 명령어의 기본 사용법은 wsadmin 콘솔 관리자 프로그램과 동일하고 일부 출력되는 정보에만 차이가 있다. 따라서 각 명령어의 사용법에 대한 자세한 설명은 “6.1. wsadmin 콘솔 관리자 프로그램”을 참고한다.

6.3. 명령어

다음은 WebtoB에서 제공되는 명령어이다.

옵션설명
wscfl텍스트 형태의 WebtoB 환경 파일을 컴파일하여 wsconfig(이진 WebtoB 환경 파일)을 생성하는 명령어이다.
wsuncfl컴파일된 wsconfig(이진 WebtoB 환경 파일)을 다시 역으로 분석하여 텍스트 형태의 환경 파일을 생성하는 명령어이다.
wsgst이진 WebtoB 환경 파일을 참조하여 서비스 테이블을 생성하는 명령어이다.
wsracdWebAdmin을 지원하기 위한 명령어이다.
wsbootWebtoB 시스템의 전체나 또는 일부분을 실행시키는 명령어이다.
wsdownWebtoB 시스템 전체나 또는 일부분을 종료시키는 명령어이다.

6.3.1. wscfl

wscfl은 텍스트 형태의 WebtoB 환경 파일을 컴파일하여 wsconfig(이진 WebtoB 환경 파일)을 생성하는 명령어로 WebtoB 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

입력 파일을 컴파일하는 중에 에러가 발견되면, 이진 WebtoB 환경 파일을 생성하지 않고 컴파일을 중단하게 된다. 에러가 발견되지 않으면 이진 파일로 변환된 WebtoB 환경 파일이 생성된다. 이 명령어로 생성된 WebtoB 환경 파일은 wsboot, wsdown 등에서 사용한다.

  • 사용법

    wscfl -i 텍스트 WebtoB 환경파일이름 [-o 이진 WebtoB 환경파일이름][-b][-v]
    옵션설명
    -i 텍스트 WebtoB 환경파일이름

    컴파일 대상이 되는 환경 파일(텍스트 형태의 WebtoB 환경파일이름)을 명시하는 데 사용되며, 반드시 필요한 옵션이다.

    경로와 함께 지정될 수 있으며 지정한 환경 파일을 찾지 못한 경우에는 경고 메시지를 출력한다.

    [-o 이진 WebtoB 환경파일이름]

    컴파일 결과물인 이진 WebtoB 환경파일이름을 명시하는 데 사용된다.

    선택 옵션으로 경로와 함께 지정할 수 있으며 경로가 지정되지 않은 경우 현재 wscfl 명령을 실행 중인 디렉터리에 명시된 이름으로 컴파일된 결과물이 생성된다.

    옵션이 생략되면 기본값으로 wsconfig라는 이름의 파일로 생성된다.

    [-b]WebtoB의 환경설정 파일을 백업한다.
    [-v]WebtoB의 버전을 확인하는 데 사용된다.
  • 예제

    • [-i] 옵션 사용

      다음은 디렉터리의 http.m이란 텍스트 형태의 WebtoB 환경 파일을 컴파일하여 현재 디렉터리에 기본으로 wsconfig라는 이진 WebtoB 환경 파일을 생성하는 예제이다.

      $ wscfl -i http.m

      다음은 디렉터리의 http.m라는 텍스트 형태의 WebtoB 환경 파일을 컴파일하여 현재 디렉터리에 wsconfig2라는 이름으로 이진 WebtoB 환경 파일을 생성하는 예제이다.

      $wscfl -i http.m -o wsconfig2
    • [-v] 옵션 사용

      다음은 WebtoB의 버전을 확인하는 예제이다.

      $wscfl -v

6.3.2. wsuncfl

wsuncfl는 컴파일된 wsconfig(이진 WebtoB 환경 파일)을 다시 역으로 분석하여 텍스트 형태의 환경 파일을 만드는 명령어로 WebtoB 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

wscfl로 컴파일되어 이진 파일로 변한 환경설정 파일을 알아볼 수 있는 텍스트 형태로 변환한다. 환경 파일의 원본을 잃어버리고 이진 파일만 가지고 있는 경우 wsuncfl을 사용해서 원래의 텍스트 형태의 환경 파일을 복구할 수 있다.

  • 사용법

    $ wsuncfl [-i 이진 WebtoB 환경파일이름] [-o 텍스트 WebtoB 환경파일이름] [-v] 
    옵션설명
    [-i 이진 WebtoB 환경파일이름]

    디컴파일 대상이 되는 바이너리 형태의 환경 파일의 이름을 명시하는 데 사용된다. 선택 옵션으로 경로와 함께 지정할 수 있으며, 지정한 환경 파일을 찾지 못한 경우에는 경고 메시지를 출력한다.

    옵션이 생략되면 기본으로 wsconfig라는 이름이 사용된다.

    [-o 텍스트 WebtoB 환경파일이름]

    디컴파일 결과물인 텍스트 WebtoB 환경파일이름을 명시하는 데 사용된다.

    반드시 필요한 옵션으로 경로와 함께 지정할 수 있으며, 경로가 지정되지 않은 경우 현재 wsuncfl 명령을 실행 중인 디렉터리에 명시된 이름으로 디컴파일된 결과물이 생성된다.

    [-v]WebtoB의 버전을 확인하는 데 사용된다.
  • 예제

    다음은 디렉터리의 wsconfig라는 이름의 이진 WebtoB 환경 파일을 현재 디렉터리에 sample_r.m이라는 텍스트 형태의 WebtoB 환경 파일로 디컴파일하는 예제이다.

    $ wsuncfl –o sample_r.m 

6.3.3. wsgst

wsgst는 이진 WebtoB 환경 파일을 참조하여 서비스 테이블을 생성하는 명령어로 WebtoB 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다.

wsgst는 wscfl 명령어에 의해서 생성된 이진 WebtoB 환경 파일의 SERVER 절과 SERVICE 절을 참조하여 각 서버별로 서비스 테이블을 생성한다. 이 테이블은 서버 프로세스에서 제공하는 서비스 명단으로써 서버 프로그램을 작성하여 컴파일할 때 함께 컴파일되어 서버 프로세스가 동작할 때 서비스 위치를 찾는 데 사용된다.

wsgst 명령의 결과는 WEBTOBDIR로 지정된 디렉터리 하위의 'svct' 디렉터리에 '서버 이름_svctab.c'의 이름으로 생성된다. 서버 이름은 SERVER 절에 등록된 서버 이름이며, 각 파일의 내용은 SERVICE 절에 등록된 해당 서버가 제공하는 서비스 이름들이다.

WebtoB 환경 파일에 등록된 서비스는 반드시 해당 서버의 서비스 테이블에도 등록이 되어야 한다. 즉, WebtoB 환경 파일의 SERVER 절이나 SERVICE 절에 서버 이름, 서비스 이름, 서비스의 SVRNAME 등이 변경된 경우 wsgst 명령을 실행한 후 그 결과물인 서비스 테이블과 함께 서버 프로그램을 다시 컴파일해야 한다.

  • 사용법

    $ wsgst [-f 이진 WebtoB 환경파일이름]
    옵션설명
    [-f 이진 WebtoB 환경파일이름]

    참조할 이진 WebtoB 환경파일이름을 명시하는 데 사용된다.

    wscfl의 결과물로써 wsboot와 wsdown에서도 참조되는 파일이다.

    경로와 함께 지정될 수 있으며, 이 옵션이 생략되면 기본으로 wsconfig라는 이름이 사용된다.

  • 예제

    다음은 WEBTOBDIR로 지정된 디렉터리 하위의 config 디렉터리에서 wsconfig을 참조하여 서비스 테이블을 생성하는 예제이다.

    $ wsgst

    다음은 /user1/park/WebtoB/bin 디렉터리의 wsconfig2 환경 파일을 참조하여 서버별로 서비스 테이블을 생성하는 예제이다.

    $ wsgst -f /user1/park/webtob/config/wsconfig2

    예를 들어 환경 파일을 다음 페이지와 같이 등록한 경우 /user1/park/webtob/svct 디렉터리에 webaps_svctab.c라는 서비스 테이블이 생성된다.

    ...
    *SERVER
    webaps         SVGNAME=webapsg
    
    *SERVICE
    svc1           SVRNAME=webaps
    svc2           SVRNAME=webaps
                           ...

6.3.4. wsracd

wsracd는 WebAdmin 및 SysMaster를 지원하기위한 명령어로 WebAdmin 또는 SysMaster를 실행하기 전에 반드시 wsracd를 실행시켜야 한다. wsracd는 WebtoB 시스템이 설치된 운영 시스템 환경에서 사용할 수 있다(WebAdmin은 현재는 향후 지원 예정이다).

  • 사용법

    $ wsracd [-k] [-f 이진 WebtoB 환경파일이름] [-a] [-d]
    옵션설명
    [-k]

    이진 WebtoB 환경 파일을 참조할 것인지 여부를 지정하는 옵션이다. 옵션을 지정하면 이진 WebtoB 환경 파일을 참조하지 않고 기본 포트로 설정되어 있는 포트를 사용한다.

    환경변수로 WEBTOB_RAC_PORT를 설정하였다면 환경변수로 설정된 포트를 사용한다. 보통 wsracd는 이 옵션을 이용하여 실행한다.

    [-f 이진 WebtoB 환경파일이름]사용자가 지정한 이진 WebtoB 환경 파일을 참조하여 실행한다. 사용자가 지정한 이진 WebtoB 환경 파일에 설정된 포트를 사용한다.
    [-a]

    anonymous(no authentication) mode로 실행한다.

    해당 옵션을 사용하지 않는 경우 OS의 계정을 통해 wsracd에 connect할때 인증절절차를 거쳐야 한다. OS의 계정을 사용하여 인증하기 때문에 ${WEBTOBDIR}/bin/wsracd를 root 계정으로 변경하고, sticky bit을 설정해야 한다.

    [-d]debug mode로 실행한다.
  • 예제

    이진 WebtoB 환경 파일을 참조하여 실행한다. 옵션을 사용하지 않으면 기본으로 ${WEBTOBDIR}/config/wsconfig를 참조한다. wsconfig 파일이 존재하지 않으면 에러 메시지를 출력한다.

    $ wsracd -a

    다음은 환경 파일을 참조하지 않고 다른 명령어(wsboot)에서 사용한 정보만 이용하는 예제이다.

    $ wsracd –k 

    다음은 사용자가 지정한 /user1/park/webtob/config/wsconfig2라는 이진 WebtoB 환경 파일을 참조하여 실행하는 예제이다.

    $ wsracd –f /user1/park/webtob/config/wsconfig2 

6.3.5. wsmkppd

wsmkppd는 SSL(PROXY_SSL)절의 PasePhraseDialog를 지원하기위한 명령어이다.

SSL(PROXY_SSL) 절에 암호화된 개인키를 설정한 경우 WebtoB를 기동할 때 암호문 입력을 요구한다. 기동할 때마다 암호문을 입력하는 것은 번거롭기 때문에 PassPhraseDialog 설정해서 사용하도록 한다. wsmkppd는 PassPhraseDialog에 적용할 수 있도록 passphrase 암호를 저장하고있는 passphrase file을 생성한다. PassPhraseDialog 사용법은 “3.17. SSL 절”“3.18. PROXY_SSL 절”을 참고한다.

  • 사용법

    $ wsmkppd [-p passwd] ppd_filename sslname
    옵션설명
    [-p passwd]암호화된 개인키에 대한 암호문을 입력한다.
    ppd_filenamePassPhraseDialge에 사용되는 파일명으로 wsmkppd 실행의 결과를 해당 파일에 (추가)저장하게 된다.
    sslnameSSL(PROXY_SSL) 절에 설정한 name이다.
  • 예제

    -p 옵션에서 암호문을 사용하지 않으면 기본으로 암호문 입력을 요구한다.

    • 다음은 wsmkppd 실행 시 옵션을 주지 않은 결과이다.

      $ wsmkppd
      Usage: wsmkppd [-p passwd] ppd_filename sslname
               -p passwd: password of private key. 
               ppd_filename: output file for PassPhraseDialog. 
               sslname: name of SSL(PROXY_SSL) section.
    • 다음은 wsmkppd를 실행할 때 ppd_filename과 sslname만 주고 실행한 결과이다.

      $ wsmkppd ssl.ppd ssl1
      New password: (암호문 입력)
      Confirm: (암호문 재입력)
      Adding Password for ssl1
      
      $ls -al ssl.ppd
      -rw-------  1 webtob webtob 19 Feb 19 10:33 ssl.ppd
    • 다음은 wsmkppd를 실행할 때 -p 옵션으로 암호문(mypasswd)을 주고 실행한 결과이다(ppd_filename이 이미 존재하면 내용만 추가하게 된다).

      $ wsmkppd -p mypasswd ssl.ppd ssl2
      Adding Password for ssl2
      
      $ls -al ssl.ppd
      -rw-------  1 webtob webtob 42 Feb 19 10:42 ssl.ppd
    • 다음은 wsmkppd 결과로 생성된 파일의 내용 예제이다.

      $ cat ssl.ppd
      ssl1:gJDP+OmN+wI=:
      ssl2:8eG+iZjNiu5k:

      다음은 SSL 절 설정 예제이다.

      *SSL
      ssl1          CertificateFile = "/webtob/ssl/newcert.pem",
                    CertificateKeyFile = "/webtob/ssl/newcert.pem",
                    PassPhraseDialog = "file:/webtob/ssl/ssl.ppd"