제13장 WebtoB 4.1 SP5 Fix#0

내용 목차

13.1. 신규 기능
13.1.1. Client Event 처리 성능 개선(epoll)
13.1.2. JSV Load Balancing
13.1.3. Cache 기능 보강
13.2. 추가 기능
13.2.1. Cache Key 기능 추가
13.2.2. wsadmin의 si, st 기능 보강
13.3. 버그 패치
13.3.1. Reverseproxy 요청 중 http1.0일 경우 데이터를 응답하지 않는 버그
13.3.2. client timeout, client close할 경우 로그 기록 규칙 수정
13.3.3. NotifyClientClose가 설정된 상태에서 HTTP1.0 요청 처리 후 JEUS와 연결을 끊는 버그

13.1. 신규 기능

13.1.1. Client Event 처리 성능 개선(epoll)

  • WebtoB는 Event Driven 방식으로 클라이언트의 요청을 처리하는데, 이때 Event를 처리하기 위해 사용하던 select() 함수 대신 성능상의 이점을 가진 epoll, devpoll, pollset 등의 OS에 특화된 Event 함수를 사용하도록 변경하였다.

    Client 수가 많을 경우 더욱 효과적인 성능 확인이 가능하다.

    참고

    Linux Kernel 2.4 , AIX 5.1 , AIX 5.2 에서는 이 기능을 사용할 수 없다.

13.1.2. JSV Load Balancing

  • JEUS로 전달되는 요청에 대해 서버들 간의 부하를 분배하는 기능을 추가하였다.

    SVRGROUP 절에 LBServers, LBType, LBBackup, Server 절에 LBFactor의 옵션을 사용한다. 각 옵션의 설정 방법은 다음과 같다.

    옵션설정 방법
    LBServersLoad Balancing 서버를 설정한다. 콤마(,)를 이용하여 여러 개의 서버명을 설정할 수 있다.
    LBTypeDynamic과 Static 중 하나를 설정한다. (기본값: Dynamic)
    LBBackup백업 서버를 설정한다.
    LBFactor1 ~ 1000의 범위 내에서 설정한다. (기본값: 1)

    다음은 Load Balancing 설정 방법이다.

    [예 13.1] Load Balancing 설정 방법

    *SVRGROUP
    jsvg
      SvrType = JSV,
      LBServers  = "jsv1, jsv2, jsv3",
      LBType = Static,
      LBBackup = "jsv4"
    
    *SERVER
    jsv1 SvgName = jsvg, MinProc = 10, MaxProc = 10, LBFactor = 10
    jsv2 SvgName = jsvg, MinProc = 10, MaxProc = 10, LBFactor = 5
    jsv3 SvgName = jsvg, MinProc = 10, MaxProc = 10, LBFactor = 1
    jsv4 SvgName = jsvg, MinProc = 10, MaxProc = 10
    


13.1.3. Cache 기능 보강

  • JSV 및 Reverse Proxy Caching 기능을 추가하였다.

    JEUS(JSV 및 Reverse Proxy)에서 처리하는 정적 페이지(non-Chunked 응답) Caching 기능을 추가하였다.

    [예 13.2] JSV Caching 설정 방법

    *Server
    jsv1
      SvgName = jsvg,
      MinProc = 1,
      MAXProc = 10 ,
      Options = "+Cache"
    

  • Cache 기능을 변경하였다.

    전체 Cache Memroy 설정(MaxCacheMemorySize) 및 Caching File Size 설정(CacheMaxFileSize)이 추가되었고, CacheEntry 기본값이 변경되었다. 각 설정에 대한 설명은 다음과 같다.

    설정설명
    Node.MaxCacheMemorySizeHTH별총 Cache 메모리 크기를 지정한다.
    Node.CacheMaxFileSizeCache하는 파일의 최대 크기를 지정한다. WebtoB 4.1 SP4 Fix#0 이전 버전에서는 HttpOutBufSize보다 작은 파일을 Cache하였다.
    wsadmin.st -h현재 Cache된 크기 확인이 가능하다.

    st -h의 사용 중인 Cache Memory 결과 확인 방법은 다음과 같다.

    [예 13.3] st -h의 사용 중인 Cache Memory 결과 확인 방법

    HTH 0:
    Requests = 0
    Cache accesses = 0
    Requests served by cache = 0
    Conditional GET requests processed by HTH = 0
    304 Not Modified responses by HTH = 0
    Requests processed by HTH-internal HTMLS = 0
    Requests that used asynchronous read threads = 0
    Responses sent through sendfile = 0
    SSL/TLS connections = 0
    Regular non-SSL connections = 0
    Pipelined requests = 0
    Requests arrived early = 0
    Request line charset converted = 0
    Modified headers (AddResponse) = 0
    Modified headers (AddResponse) buffer allocations = 0
    Modified headers (AddRequest) = 0
    Modified headers (AddRequest) buffer allocations = 0
    Cache current memory use = 0MB
    

13.2. 추가 기능

13.2.1. Cache Key 기능 추가

  • 기존의 Host URI만 구분하는 Cache의 조건을 Real Path를 선택할 수 있는 기능을 추가하였다.

    Host URI의 경우에는 Request의 URI를 기준으로 Cache를 하고, Real Path의 경우에는 서버 디렉터리의 요청 파일의 경로를 기준으로 Cache하게 된다.

    [예 13.4] NODE 절 CacheKey 설정 방법

    *Node
    webmain    WEBTOBDIR = "/usr/local/webtob",
               CacheKey = REAL_PATH # default HOST_URI

13.2.2. wsadmin의 si, st 기능 보강

  • wsadmin의 si, st의 결과를 출력할 때 원하는 복수의 서버를 지정하여 출력할 수 있는 기능을 추가하였다.

    [예 13.5] wsadmin si(st) 추가 기능 동작 방법

    ▨Wsadmin
    si(or st -v, st -p, st -s) svrname1,svrname2,..
    
    ▨예제
    $$1 qpsx1 (wsadm) [2012/04/09:13:49:32]: si html,MyGroup
    --------------------------------------------------------------------------------
     hth   svrname (svri)   status     count cqcnt    aqcnt qpcnt emcnt rscnt rbcnt
    --------------------------------------------------------------------------------
       0  html       (  0)   RDY           0     0        0     0     0     0     0
       0  MyGroup    (  2)   NRDY          0     0        0     0     0     0     0

13.3. 버그 패치

13.3.1. Reverseproxy 요청 중 http1.0일 경우 데이터를 응답하지 않는 버그

  • ReverseProxy 요청이 Content-Length 해더가 없는 Http1.0일 경우, 응답 Header만 있고 Data(body)는 보내지 않는 문제가 발생하였다.

    이 경우 데이터 응답을 보내도록 수정하였다.

    참고

    WebtoB 4.1 SP4 Fix#0 이하 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-66007

13.3.2. client timeout, client close할 경우 로그 기록 규칙 수정

  • 요청을 JEUS에서 처리할 때, Client Timeout된 경우와 Client Connection Close된 경우의 규칙을 수정하였다.

    수정 내용은 다음과 같다.

    ▨ running & client timeout
       accesslog : 500 status
       errorlog  : Client timeout has expired..
       syslog    : Discard..
    ▨ running & client timeout & notifyclientclose
       accesslog : 500 status
       errorlog  : Client timeout has expired..
       syslog    : jsv reconnect..
    ▨ running & client close
       accesslog : x
       errorlog  : jsv: premature client close..
       syslog    : Discard..
    ▨ running & client close & notifyclientclose
       accesslog : x
       errorlog  : jsv: premature client close..
       syslog    : jsv reconnect..
    ▨ queuing & client timeout
       accesslog : 500 status
       errorlog  : Client timeout has expired..
       syslog    : x
    ▨ queuing & client close
       accesslog : x
       errorlog  : jsv(QED): premature client close ..
       syslog    : x

13.3.3. NotifyClientClose가 설정된 상태에서 HTTP1.0 요청 처리 후 JEUS와 연결을 끊는 버그

  • NotifyClientClose가 설정된 상태에서 HTTP1.0 요청 처리 후 JEUS와의 연결을 끊는 문제를 수정하였다.

    참고

    WebtoB 4.1 SP2 Fix#0, WebtoB 4.1 SP4 Fix#0 버전에서 발생하는 오류 현상이다.

  • 관련이슈 : IMS-66831