메시지 플로우 스레드가 실행될 때, 이 스레드는 그와 연결된 노드의 논리에 의해 정의된 지시사항을 수행하기 위해 저장영역을 필요로 합니다. 이 저장영역은 실행 그룹의 힙(heap) 및 스택 크기에서 할당됩니다. 메시지 플로우 스레드에 할당된 디폴트 스택 크기는 사용하는 플랫폼에 따라 다릅니다.
각 메시지 플로우 스레드에 1MB의 스택 공간이 할당됩니다.
각 메시지 플로우 스레드에 8MB의 스택 공간이 할당됩니다.
각 메시지 플로우 스레드에 1MB의 스택 공간이 할당됩니다.
각 메시지 플로우 스레드에는 512KB의 하향식 스택 공간과 50KB의 상향식 스택 공간이 할당됩니다.
메시지 플로우에서 노드는 일반적으로 약 2KB의 스택 공간을 사용합니다. 따라서 일반적인 메시지 플로우는 대략 z/OS에 250개의 노드, UNIX 플랫폼에 500개의 노드, Windows에 500개의 노드를 포함시킬 수 있습니다. 이 양은 사용하는 노드의 유형과 수행하는 처리에 따라 높거나 낮을 수 있습니다.
MQSI_THREAD_STACK_SIZE 환경 변수를 적절한 값을 설정하여 스택 크기를 증가시킬 수 있습니다. 시스템에서 실행 중인 브로커를 재시작하면 새 값을 사용합니다.
설정한 MQSI_THREAD_STACK_SIZE의 값은 DataFlowEngine 프로세스에서 작성되는 모든 스레드에 사용됩니다. 실행 그룹에 다수의 메시지 플로우가 지정되어 있고 MQSI_THREAD_STACK_SIZE에 큰 값을 설정하면 DataFlowEngine 프로세스는 스택을 저장하는 데 많은 양의 저장영역이 필요합니다.
z/OS의 Integrator 구성요소는 런타임 코드에 최적화 기능을 추가하는 새 XPLINKage(추가 성능 연계)를 사용하여 컴파일됩니다. 그러나 초기 스택 크기가 충분히 크지 않으면 스택 범위를 사용합니다. 각 범위에서 128KB가 사용됩니다. 스택 범위를 사용할 때 XPLINK의 수행 능력이 떨어지므로 하향식 스택 크기를 충분히 크게 선택하는 것이 매우 중요합니다.
export _CEE_RUNOPTS=XPLINK\(ON\),RPTSTG(ON)z/OS에서 구성요소 프로파일의 LE_CEE_RUNOPTS 환경 변수를 추가하거나 변경하여 스택 크기의 디폴트 값을 대체할 수 있습니다.
구성요소 프로파일 갱신 중에 구성요소를 정지하고 프로파일을 변경한 다음 BIPGEN을 전송하여 ENVFILE을 재작성하고 구성요소를 다시 시작하십시오.
export _CEE_RUNOPTS=XPLINK(ON),THREADSTACK(ON,50K,15K,ANYWHERE,KEEP,512K,128K)
RPTSTG를 사용하면 응용프로그램을 실행하는 데 걸리는 시간이 증가합니다. 따라서 메시지 플로우 개발을 지원하는 데에만 사용하고 마지막 프로덕션 환경에서 사용해야 합니다. 올바른 필요 스택 크기를 판별했으면 _CEE_RUNOPTS 환경 변수에서 이 옵션을 제거해야 합니다.