![[z/OS]](../images/ngzos.gif)
HTTP 요청 WLM 균등 분배
z/OS® 워크로드 관리(WLM) 컴포넌트는 하위(servant) 사이에서 라운드 로빙 방식으로 하위 선호도 없이 수신되는 HTTP 요청을 분배할 수 있도록 지원합니다. 이 기능은 Stateless 세션 EJB(Enterprise JavaBeans)와 Stateful 세션 엔터프라이즈 Bean의 create 메소드에 사용됩니다(메모리에 보관되어 장기적으로 지속되는 HTTP 세션 오브젝트에 제한되지 않음). 제품이 이 기능을 사용하여 동일한 작업 큐에 인바운드 요청으로 현재 바인드되어 있는 활성 하위(servant) 사이에 HTTP 요청을 분산시키도록 구성할 수 있습니다.
다음 다이어그램은 하나의 클러스터된 서버 인스턴스를 나타냅니다. azsr01 클러스터는 azsr01a 애플리케이션 서버 인스턴스를 포함합니다. 애플리케이션 서버 인스턴스는 애플리케이션이 실행되는 하위(servant) 영역, 제어기 및 워크로드 관리자(WLM) 큐입니다. 제어기는 HTTP 및 IIOP 종료 지점입니다. WLM 큐는 제어기에서 하위 영역 중 하나로의 작업 흐름를 제어합니다. 하위 영역 각각에는 WLM 큐에서 작업을 선택하는 작업자 스레드가 있습니다.
이전 다이어그램에서는 최소 및 최대 하위 영역 수가 3이 되도록 애플리케이션 서버를 구성했습니다.
Service-Class Xref Notes Options Help
--------------------------------------------------------------------------
Modify a Service Class Row 1 to 2 of 2
Command ===> ______________________________________________________________
Service Class Name . . . . . : AZAMS1
Description . . . . . . . . . WAS Enclave Work
Workload Name . . . . . . . . ONL_WKL (name or ?)
Base Resource Group . . . . . ________ (name or ?)
Cpu Critical . . . . . . . . . NO (YES or NO)
Specify BASE GOAL information. Action Codes: I=Insert new period,
E=Edit period, D=Delete period.
---Period--- ---------------------Goal---------------------
Action # Duration Imp. Description
__
__ 1 1 Execution velocity of 50
******************************* Bottom of data ********************************
Subsystem-Type Xref Notes Options Help
--------------------------------------------------------------------------
Modify Rules for the Subsystem Type Row 11 to 20 of 20
Command ===> ____________________________________________ SCROLL ===> CSR
Subsystem Type . : CB Fold qualifier names? Y (Y or N)
Description . . . Component Broker requests
Action codes: A=After C=Copy M=Move I=Insert rule
B=Before D=Delete row R=Repeat IS=Insert Sub-rule
More ===>
--------Qualifier-------- -------Class--------
Action Type Name Start Service Report
DEFAULTS: AZAMS1 RBBDEFLT
____ 1 CN AZSR01 ___ AZAMS1 RAZAMS1
____ 1 CN AZSR02 ___ AZAMS2 RAZAMS2
____ 1 CN AZSR03 ___ AZAMS3 RAZAMS3
****************************** BOTTOM OF DATA *****************************
이 제품은 하위(servant)가 여러 개인 애플리케이션 서버의 메모리에서 HTTP 세션 오브젝트를 사용하도록 지원하는데 이를 hot 하위 계획이라고 합니다. 다음 다이어그램에서 두 명의 사용자가 azsr01a 애플리케이션 서버 인스턴스의 애플리케이션에 액세스했습니다. 사용자 1은 하위 영역 3에서 HTTP 세션 오브젝트를 설정하고 사용자 2는 하위 영역 2에서 HTTP 세션 오브젝트를 설정했습니다.
- 구성은 새로운 하위(servant)를 작성할 수 있습니다.
- 워크로드 관리자 로직은 시스템이 추가 하위 영역을 유지할 수 있는지 판별합니다.
- 다른 하위 영역을 추가하면 큐 지연이 감소하여 지정된 목표 내에 엔클레이브가 완료될 수 있습니다.
동일 서비스 클래스에 여러 개의 하위 영역이 바인드되면 WLM은 새 요청을 긴급 하위 영역에 디스패치하려고 합니다. 긴급 하위 영역에는 디스패치된 최근 요청이 있으며 사용 가능한 스레드가 있습니다. hot 하위(servant)에 작업 백로그가 있으면 WLM은 해당 작업을 다른 하위로 디스패치합니다.
일반적으로 이 hot 하위 계획을 실행하는 것이 좋습니다. 그 이유는 hot 서버의 모든 필요한 페이지가 기억장치에 있고 JIT(just-in-time) 컴파일된 애플리케이션 메소드가 저장되며 빠른 데이터 검색을 위해 전체 데이터를 캐시하기 때문입니다. 그러나 다음과 같은 경우에는 이 계획에 문제가 있습니다.
- 메모리의 HTTP 세션 오브젝트가 사용되어 선호도가 디스패치됩니다.
- HTTP 세션 오브젝트가 몇 시간 또는 며칠 동안 지속됩니다.
- 다수의 클라이언트에 메모리에 보관할 HTTP 세션 오브젝트가 있습니다.
- 세션 오브젝트의 손실로 인해 클라이언트 또는 서버가 손상되며, HTTP 세션을 작성하는 요청 사이의 시간이 길어집니다.
- 애플리케이션이 단일 하위 영역에서 많은 오브젝트를 작성하면 가비지 콜렉션 시간이 길어질 수 있습니다.
- 모든 HTTP 세션 오브젝트가 하나의 하위 영역에 바인드되면 WLM이 작업을 관리할 수 없기 때문에 어떤 하위 영역에서도 디스패치될 수 없어서 요청이 큐에 보유되는 시간이 길어질 수 있습니다.
- 모든 HTTP 세션 오브젝트가 하나 또는 두 개의 하위에 상주하는 경우 단일 하위 영역의 제한시간은 HTTP 세션 오브젝트가 여러 하위에 똑같이 분배되는 경우보다 더 많은 사용자에게 영향을 미칠 수 있습니다.
위에서 설명한 hot 하위 계획 문제가 발생되는 상황 중 하나가 구성 경험에서 발생할 경우, 하위 선호도 없이 수신 HTTP 요청을 하위에 분배하도록 애플리케이션 서버를 구성할 수 있습니다. 이 기능을 사용하는 경우 애플리케이션 서버는 HTTP 요청을 라운드 로빙 방식으로 하위에 분배합니다.
다음 예제에서는 애플리케이션 서버가 하위 영역 사이에 HTTP 요청의 라운드 로빙 분배를 사용하도록 구성되어 있고 여러 하위 영역이 동일한 서비스 클래스가 지정된 작업 큐 요청에 대해 시작되었다고 가정하십시오.
선호도 없는 새 HTTP 요청이 작업 큐에 도달하면 WLM은 해당 작업을 기다리고 있는 최소 하나의 작업자 스레드가 있는 하위 영역이 있는지 확인합니다. 어떤 하위 영역에도 사용 가능한 작업자 스레드가 없으면 WLM은 하위 영역에 있는 작업자 스레드가 사용 가능할 때까지 요청을 큐에 넣습니다. 사용 가능한 작업자 스레드가 있으면 WLM은 선호도가 가장 적은 하위 영역을 찾습니다. 선호도 개수가 같은 하위 영역이 있으면 WLM은 사용 중인 서버 스레드 수가 더 적은 하위 영역에 작업을 디스패치합니다.
이 알고리즘의 목적은 상황이 변화하는 것을 고려하면서 WLM이 대기 중인 하위에서 하위 선호도 없는 수신 요청의 균형을 조절하는 것입니다. 이 알고리즘은 요청을 라운드 로빙 방식으로 서버에 무조건 지당하지 않습니다. 다음 다이어그램은 하위 영역 사이에 균형있게 분배된 HTTP 세션 오브젝트를 보여줍니다.
이 분배 메커니즘은 선호도 없는 모든 인바운드 요청에 작동합니다. HTTP 세션 오브젝트가 작성되면 모든 클라이언트 요청은 HTTP 세션 오브젝트가 제거될 때까지 하위로 지정됩니다.
하위 영역 선호도가 없는 수신되는 HTTP 요청의 분배가 가능하도록 결정하면 분류 맵핑 파일을 일부 변경해야 할 수도 있습니다. 제품에서 제공하는 관리 라운드 로빙 지원용 맵핑 규칙에 둘 이상의 트랜잭션 클래스를 지정하도록 분류 맵핑 파일을 설정한 경우 분류 맵핑 파일에서 이 섹션을 제거해야 합니다.