Liberty의 최적화 로컬 어댑터 성능 고려사항
WebSphere® 최적화 로컬 어댑터(WOLA) API는 z/OS®용 Liberty에서 외부 주소 공간과 애플리케이션 간의 호출을 위한 최적의 성능을 제공하도록 설계되어 있습니다. 이 API는 이 환경에서 애플리케이션 간 세분화된 상호작용을 지원하여 새로운 유형의 애플리케이션 패턴을 설정합니다. 사용자 시스템에 맞는 최적 구성 옵션을 선택하여 최적화 로컬 어댑터 사용의 성능상 이점을 최대화할 수 있습니다.
등록 API 호출에 대해 최소 및 최대 연결 값 선택
등록 API 호출에 대해 너무 큰 최소 연결 값을 선택하면 성능이 저하될 수 있습니다. 설정된 각각의 연결은 등록 해제 API가 호출될 때까지 유지되므로 너무 큰 최소 연결 값을 사용하면 더 많은 메모리가 이용되고 각각의 등록 및 등록 해제 API 호출을 완료하는 데 필요한 시간이 증가합니다. 사용자의 요구에 맞는 가장 작은 최소 연결 값을 선택하십시오. 예를 들어, 수백 개의 동시 스레드가 잠재적으로 등록을 공유할 수 있는 경우에는 최소 연결 값이 큰 등록에 더 많은 메모리 및 시간을 제공하는 것이 합리적입니다. 동시 스레드 수가 거의 없을 것으로 예상되면 더 작은 최소 연결 값을 설정하십시오.
클라이언트가 연결을 요청할 때 연결을 대기해야 하는 경우에는 최대 연결 수에 대해 너무 작은 값을 선택해도 성능이 저하될 수 있습니다. 최대 연결 값이 초과되면 호출하는 스레드는 연결을 사용할 수 있을 때까지 연결 가져오기, 호출, 임의의 요청 수신Receive Request Any 또는 호스트 서비스 API의 대기 시간 매개변수에서 지정된 시간(초) 동안 대기합니다. 이 시간이 만료되면 대기 시간이 만료되기 전에 요청에 대한 연결 핸들을 확보할 수 없음을 나타내는 리턴 및 이유 코드가 다시 전달됩니다. 사용자 환경의 예상 요구에 가장 적합한 최적 연결 값을 선택하십시오.
CICS 링크 서버를 시작할 때 최대 연결 값 선택
최소 연결(MNC) 및 최대 연결(MXC) 매개변수를 지정하지 않고 CICS®(Customer Information Control System) 아래에서 링크 서버 태스크를 시작하면 MNC의 기본값은 1로 설정되고 MXC의 기본값은 10으로 설정됩니다. MXC 매개변수의 값은 링크 서버 태스크(BBO$)에 의해 시작되어 동시에 실행될 수 있는 링크 호출 태스크(BBO#)의 수를 지정합니다. 따라서 이 값은 CICS 대상 프로그램을 실행하고 시작할 수 있는 Liberty 서버의 동시 스레드 수도 제한합니다.
링크 서버의 이 인스턴스 아래에서 시작되는 일반적인 대상 CICS 프로그램의 예상 지속 기간을 반영하는 MXC 값을 선택하십시오. 예를 들어, 대상 CICS 프로그램이 대부분 장기 실행 중인 경우에는 Liberty 서버에서 CICS로 요청의 효율적인 플로우를 유지할 수 있도록 보다 큰 MXC 값이 적합합니다. 대상 프로그램의 수명이 짧은 경우에는 더 작은 MXC 값이 더 효율적입니다.
공유 64비트 메모리
최적화 로컬 어댑터 기능이 Liberty 서버에서 사용으로 설정되는 경우, 서버는 z/OS에서 2GB 바 위에 있는 32MB의 공유 메모리를 가져옵니다. 이 메모리는 동일한 wolaGroup 이름의 모든 Liberty 서버에 의해 공유되며, 공유되는 최적화 로컬 어댑터 제어 구조를 저장합니다.
2GB 바 위에 있는 추가 공유 메모리는 클라이언트와 Liberty 서버 간에 전달되는 메시지를 저장하기 위해 할당됩니다. 메시지를 전달하기 위해 필요한 스토리지의 크기는 전달되는 메시지의 평균 크기에 따라 다르며 한 시점에 존재하는 모든 메시지 데이터를 보유할 수 있는 충분한 공유 메모리가 있어야 합니다. 필요에 따라 추가적인 메모리가 할당됩니다.
애플리케이션이 등록 해제 API 호출 및 종료 없이 계속 등록 API를 호출하고 루프하여 이 등록을 자동으로 정리하는 경우 WOLA 그룹의 최적화 로컬 어댑터 공유 메모리 버퍼를 오버플로우할 수 있습니다. 이 경우 API 호출은 메모리 부족 이유 코드와 함께 리턴됩니다.
애플리케이션에 필요한 대략적인 WOLA 공유 메모리 크기를 계산할 수 있습니다. 각각의 클라이언트 등록에서는 384바이트의 공유 메모리와 각각의 연결에 대한 192바이트의 공유 메모리를 이용합니다. 최대 100개의 연결을 가진 등록에서는 약 20KB의 공유 메모리를 이용합니다. 모든 연결이 사용 중인 경우 연결을 사용할 수 있을 때까지 대기해야 하는 각각의 클라이언트 스레드는 추가로 80바이트를 이용합니다. 등록에서 호스팅하는 각각의 서비스에서는 추가로 384바이트를 이용합니다.
200개의 등록 x 384바이트 = 76,800바이트 200개의 등록 x 200개의 연결 x 192바이트 = 7,680,000바이트 200개의 등록 x 1000개의 대기자 x 80바이트 = 16,000,000바이트 ----------------------------------------------------------------- 23,756,800바이트 33,554,432바이트 – 23,756,800바이트 = 9,797,632바이트 남음 / 서비스당 384바이트 ----------------------------------------------------------------- 25,514개의 서비스
최적화 로컬 어댑터 CICS 링크 서버 성능 고려사항
Liberty 서버에서 실행 중인 애플리케이션에서 기존 CICS 애플리케이션 프로그램을 호출하는 단순한 방법으로서 CICS 링크 서버에 대한 최적화 로컬 어댑터를 사용할 수 있습니다. 링크 서버를 시작하면 최적화 로컬 어댑터 링크 서버 태스크(BBO$)가 시작되며 Liberty 서버의 프로그램 링크 요청을 수신합니다. 링크 요청이 수신되면 링크 서버 태스크(BBO$)가 프로그램 링크 태스크(BBO#)를 시작하며, 이는 다시 대상 프로그램에 대해 EXEC CICS LINK 명령을 실행하고 응답을 수신하며 이를 Liberty 서버 호출자에게 전송합니다. 이러한 조치를 수행하기 위해, BBOC START_SRVR 명령에서 SEC=Y 매개변수를 설정하여 Liberty 서버의 애플리케이션의 스레드 레벨 ID가 대상 CICS 태스크에 전파되고 어설션됩니다.
REU=Y로 링크 서버를 실행하는 경우 프로그램 링크 태스크(BBO#)는 등록을 위해 BBOC STOP_SRVR 또는 UNREGISTER 명령을 입력할 때까지 활성 상태를 유지합니다. 많은 최대 연결(MXC) 값과 많은 수의 동시 도달 요청을 사용하여 실행 중인 경우 활성 프로그램 링크 태스크(BBO#)의 수는 CICS 최대 동시 태스크 임계값에 도달합니다. CICS 최대 동시 태스크 임계값 설정에 대한 자세한 정보는 사용자의 CICS 버전에 대한 문서를 참조하십시오.
Liberty 서버에서 CICS의 애플리케이션으로 호출을 실행할 때 가장 빠른 성능을 얻으려면, 애플리케이션 프로그램에서 직접 호스트 서비스, 임의의 요청 수신 또는 요청 수신 특정 API를 코딩하십시오. 하지만 API를 직접 코딩하면 링크 서버가 제공하는 ID 전파에 대한 기본 제공 지원이 제공되지 않습니다.
JCA 자원 어댑터 사용에 대한 고려사항
최적화 로컬 어댑터 JCA 자원 어댑터를 사용하는 경우 ConnectionFactory 오브젝트로부터 얻는 각각의 연결에는 추가적인 메모리 오버헤드가 필요합니다. 애플리케이션이 동일한 애플리케이션 메소드에서 외부 주소 공간 또는 CICS에 대한 몇몇 호출을 작성하는 경우에는 각각의 상호작용에 대해 동일한 연결을 사용하고 애플리케이션 메소드에서 동일한 JCA 상호작용 오브젝트를 사용하여 성능을 향상시킬 수 있습니다.
최적화 로컬 어댑터에 대한 JCA ConnectionFactory 오브젝트를 작성하는 경우 해당 ConnectionFactory에 대한 최소 및 최대 JCA 연결 풀 크기를 수정할 수 있습니다. 연결 풀은 상호작용 중에 등록 API를 호출할 때 지정되는 실제 접속에 바인드되는 논리 연결을 나타냅니다. 최적의 성능을 위해 JCA 연결 풀의 크기를 등록 API 호출 중에 설정한 실제 연결 풀 크기와 동일한 크기로 설정하십시오. JCA 연결 풀이 너무 작으면 실제 접속을 사용할 수 있는 경우에도 애플리케이션이 JCA 연결 오브젝트를 기다려야 합니다.