Quando è in esecuzione un thread del flusso di messaggi, esso necessita di una memoria per eseguire le istruzioni definite dalla logica dei nodi connessi. Questa memoria si ricava dalla dimensione di stack e di heap del gruppo di esecuzione. La dimensione predefinita dello stack assegnata al thread del flusso di messaggi dipende dalla piattaforma utilizzata.
Ad ogni thread del flusso di messaggi è assegnato 1MB di spazio stack.
Ad ogni thread del flusso di messaggi sono assegnati 8MB di spazio stack.
Ad ogni thread del flusso di messaggi è assegnato 1MB di spazio stack.
Ad ogni thread del flusso di messaggi sono assegnati 512 KB di spazio stack dall'alto verso il basso e 50 KB di spazio di stack dal basso verso l'alto.
In un flusso di messaggi, un nodo utilizza in genere circa 2KB dello spazio stack. Un tipico flusso di messaggi può perciò includere circa 250 nodi su z/OS, 500 nodi sulle piattaforme UNIX e 500 nodi su Windows. Questa quantità può essere maggiore o minore a seconda del tipo di nodi utilizzati e dell'elaborazione che essi eseguono.
E' possibile aumentare la dimensione dello stack impostando la variabile di ambiente MQSI_THREAD_STACK_SIZE su un valore appropriato. Quando si riavviano i broker in esecuzione sul sistema, questi utilizzeranno il nuovo valore.
Il valore di MQSI_THREAD_STACK_SIZE impostato viene utilizzato per ogni thread creato all'interno del processo DataFlowEngine. Se al gruppo di esecuzione è assegnato un numero elevato di flussi di messaggi e si imposta un valore elevato per MQSI_THREAD_STACK_SIZE, il processo DataFlowEngine avrà bisogno di una grande quantità di spazio di memoria per lo stack.
I componenti Integrator su z/OS sono compilati utilizzando il nuovo XPLINKage (extra performance linkage), che aggiunge ottimizzazione al codice runtime. Tuttavia, se la dimensione iniziale dello stack non è sufficiente, verranno utilizzate le estensioni stack. In ogni estensione sono utilizzati 128KB. E' molto importante scegliere una dimensione dello stack dall'alto verso il basso sufficientemente grande, poiché XPLINK non opera correttamente quando vengono utilizzate le estensioni stack.
export _CEE_RUNOPTS=XPLINK\(ON\),RPTSTG(ON)E' poi possibile sovrascrivere i valori predefiniti per le dimensioni dello stack su z/OS alterando o aggiungendo la variabile di ambiente LE_CEE_RUNOPTS nel profilo componenti.
Quando si effettua l'aggiornamento del profilo componente si deve arrestare il componente, apportare le necessarie modifiche al profilo, inoltrare BIPGEN per ricreare ENVFILE e riavviare il componente.
export _CEE_RUNOPTS=XPLINK(ON),THREADSTACK(ON,50K,15K,ANYWHERE,KEEP,512K,128K)
Utilizzando RPTSTG si aumenta il tempo di esecuzione dell'applicazione. Si consiglia quindi di utilizzare tale opzione come supporto solo allo sviluppo dei flussi di messaggi e dell'ambiente di produzione finale. Una volta stabilite le opportune dimensioni dello stack corrette necessarie si consiglia di rimuovere questa opzione dalla variabile di ambiente _CEE_RUNOPTS.