WebtoB 프로세스 구조

WebtoB는 안정적이 서비스를 위해서 프로세스가 의도치 않게 종료될 경우 자동으로 재기동을 해줍니다. 기동 시 기본 동작은 Manager 프로세스와 Engine 프로세스를 함께 기동합니다.

프로세스 종류

다음은 WebtoB의 프로세스 종류에 대한 설명입니다.

Process 이름 설명

Manager

Engine 프로세스가 의도치 않게 shutdown 되면 기동시켜 줍니다.

Engine

HTTP 요청을 처리합니다.

Manager와 각 Engine들은 설정이 반드시 일치해야 합니다.

기동되어 있는 프로세스의 설정과 새로 기동할 때 가져온 설정이 다를 경우 변경된 설정으로 프로세스를 재기동 할 지 선택할 수 있습니다.

Manager 프로세스

  • 실제로 HTTP 요청을 처리하는 웹 서버 프로세스(Engine)를 관리해주는 역할을 합니다.

  • Engine 프로세스를 지켜 보고 있다가 비정상 종료되는 경우 재기동시켜줍니다. 이미 Engine 프로세스가 기동 되어 있는 경우 Manager는 기동되어 있는 Engine을 관리해줍니다.

  • Manager 프로세스는 1개만 기동 할 수 있습니다.

  • WebtoB 기동의 기본동작은 Manager와 Engine을 모두 기동하지만 Manager 프로세스만 기동할 수도 있습니다.

> webtob -a start-manager
  • Manager는 Rest API를 통해 Admin API를 제공합니다. Manager port는 node절에서 설정하며 사용가능한 API는 다음과 같습니다.

API 이름 설명

/config

환경 설정 내용을 조회합니다.

/shutdownmanager

WebtoB Manager를 종료합니다.

/API config

현재 동작 중인 시스템의 환경 정보를 조회합니다. 이 과정에서는 환경 설정 파일에서 지정한 값뿐만 아니라 기본적으로 적용되는 값까지 확인할 수 있습니다.

  • 사용법

    {
        "path": string
    }
    옵션 설명

    path

    환경 설정 파일의 JSON 경로를 지정합니다. 이때 경로는 항상 /로 시작해야 합니다.
    경로를 생략하거나 /로 설정하면 현재 설정된 모든 환경 설정을 가져옵니다.

  • 예시

    다음은 NODE 절 환경 설정을 "/config" Admin API로 확인한 예시입니다. NODE 절의 설정 항목에 대한 자세한 설명은 NODE 절 설정 항목을 참고합니다.

    [Request]
    {
        "path": "/node"
    }
    
    [Response]
    {
        "result": {
            "cache_entry": 128,
            "cache_key": "HOST_URI",
            "cache_max_file_size": 8192,
            "connection_pool_size": 8192,
            "graceful_shutdown_timeout": 5,
            "hth_count": 1,
            "hth_schedule": "RR",
            "limit_request_body_size": 0,
            "limit_request_header_field_count": 100,
            "limit_request_header_field_size": 8190,
            "limit_request_line_size": 8190,
            "listen_backlog": 4096,
            "max_cache_memory_size": 100,
            "name": "webtob-server",
            "system_filters": [],
            "worker_threads": 1
        }
    }

/API shutdownmanager

동작 중인 WebtoB Manager를 종료합니다.

  • 사용법

    {
       "timeout": integer
    }
    옵션 설명

    "timeout"

    graceful shutdown 과정의 타임아웃을 초 단위로 지정합니다. 지정된 시간이 지나도 WebtoB Manager가 종료되지 않으면 강제 종료됩니다.
    생략 시 /node/graceful_shutdown_timeout에 설정된 값이 적용됩니다.

  • 예시

    다음은 30초 동안 graceful shutdown을 시도한 후 WebtoB가 종료되지 않으면 강제 종료하도록 "/shutdownmanager" Admin API를 호출하는 예시입니다.

    [Request]
    {
       "timeout": 30
    }
    
    [Response]
    {
       "result": {}
    }

    응답은 WebtoB에서 명령을 수신한 직후 반환됩니다. 단, 응답을 받은 후에도 WebtoB Manager프로세스가 동작 중일 수 있습니다. WebtoB Manager를 종료하더라도 Engine은 종료되지 않습니다.

Engine

  • 실제로 HTTP 요청을 처리하는 프로세스입니다.

  • 각 프로세스마다 인덱스를 가지고 있으며 인덱스는 0부터 시작합니다.

  • 기동 시킬 프로세스의 갯수는 /node/process_count에서 설정할 수 있습니다.

이미 WebtoB가 기동 되어 있는 상태에서도 설정의 process_count만 변경하여서 WebtoB를 기동하는 방식으로 Engine 프로세스의 갯수 변경이 가능 합니다.

  • WebtoB 기동의 기본동작은 Manager와 Engine을 모두 기동하지만 Engine 프로세스만 기동할 수도 있습니다.

> webtob -a start-engine
  • Engine도 Rest API를 통해 Admin API를 제공합니다. (Admin-API 문서 참조)

  • 로그파일 이름에 %fullname% 혹은 %pid%를 설정할 경우 각 프로세스 별로 로그 파일이 따로 생성됩니다.

%fullname%이나 %pid%없이 %name%이 있으면 Manager와 Engine만 구분되어서 로그 파일이 생성됩니다.