Guida per l'impostazione degli attributi IBM MQ e delle proprietà IBM MQ Managed File Transfer associate alla dimensione del messaggio

È possibile modificare gli attributi IBM® MQ e le proprietà IBM MQ Managed File Transfer per influire sul comportamento di IBM MQ Managed File Transfer durante la lettura o la scrittura di messaggi di varie dimensioni.

Se la dimensione dei messaggi letti da una coda di origine o scritti in una coda di destinazione supera i 1048576 byte (1 MB), è necessario aumentare il valore della proprietà dell'agent IBM MQ Managed File Transfer maxInputOutputMessageLength in un valore maggiore o uguale alla dimensione massima del messaggio da leggere o scrivere.

Se i messaggi nella coda di origine sono maggiori di 1048576 byte, è necessario impostare la proprietà maxInputOutputMessageLength sull'agent di origine. Se i messaggi sulla coda di destinazione sono maggiori di 1048576 byte, è necessario impostare la proprietà maxInputOutputMessageLength sull'agente di destinazione. Per ulteriori informazioni sulla proprietà maxInputOutputMessageLength , consultare Advanced agent properties.
  • Se la coda su cui l'agent sta scrivendo o da cui sta leggendo è locale per il gestore code dell'agent, potrebbe essere necessario modificare gli attributi IBM MQ gestore code, coda e canale MAXMSGL .

    Verificare che il valore della dimensione massima del messaggio della coda di origine o di destinazione sia maggiore o uguale al valore della proprietà dell'agente maxInputOutputMessageLength .

    Verificare che il valore di ciascuno dei seguenti attributi IBM MQ , in byte:
    • La dimensione massima del messaggio del gestore code agent
    • La dimensione massima del messaggio di SYSTEM.FTE.STATE. <nome_agent> coda
    • La dimensione massima dei messaggi del canale client, se l'agent si connette al gestore code in modalità client
    è maggiore o uguale al risultato del seguente calcolo:
    Per un trasferimento da file a messaggio (che supporta una dimensione file fino a 100 MB):
    Il valore di maxInputOutputMessageLength

    Per un trasferimento da messaggio a file:
    Il valore di 3 * (maxInputOutputMessageLength) + 1048576

    (Questo calcolo deriva dal fatto che tre punti di controllo possono essere memorizzati in un messaggio di stato e ciascun punto di controllo potrebbe dover eseguire il buffer fino alla dimensione massima di una quantità di dati del messaggio.)
  • Se la coda in cui l'agent sta scrivendo è una coda remota, potrebbe essere necessario modificare gli attributi IBM MQ gestore code, coda e canale MAXMSGL .

    Assicurarsi che il valore di ciascuno dei seguenti IBM MQ attributi sia maggiore o uguale al valore della proprietà dell'agent maxInputOutputMessageLength :
    • La dimensione massima del messaggio della coda di trasmissione del gestore code remoto sul gestore code dell'agente
    • La dimensione massima del messaggio del canale dal gestore code agent al gestore code remoto
    • La dimensione massima dei messaggi per la coda di destinazione sul gestore code remoto
    • La dimensione massima del messaggio del gestore code remoto

    Verificare che il valore di ciascuno dei seguenti attributi IBM MQ , in byte:
    • La dimensione massima del messaggio del gestore code agent
    • La dimensione massima del messaggio di SYSTEM.FTE.STATE. <nome_agent> coda
    • La dimensione massima dei messaggi del canale client, se l'agent si connette al gestore code in modalità client
    è maggiore o uguale al risultato del seguente calcolo:
    Per un trasferimento da file a messaggio (che supporta una dimensione file fino a 100 MB):
    Il valore di maxInputOutputMessageLength

    Per un trasferimento da messaggio a file:
    Il valore di 3 * (maxInputOutputMessageLength) + 1048576

    (Questo calcolo deriva dal fatto che tre punti di controllo possono essere memorizzati in un messaggio di stato e ciascun punto di controllo potrebbe dover eseguire il buffer fino alla dimensione massima di una quantità di dati del messaggio.)

Se si supera il valore di una di queste proprietà, l'agent viene arrestato con il seguente errore nel log eventi dell'agent:
BFGUT0002E: An internal error has occurred. Product failure data was captured in file 
"FFDC.FTE.20100928170828514.8172766022149157013.log". 
BFGSS0025E: An internal error has occurred.  The exception is: cc=2 rc=2010 op=put - MQPUT to SYSTEM.FTE.STATE.<agent_name>
BFGAG0061E: The agent ended abnormally 
I seguenti codici di errore IBM MQ potrebbero essere inclusi in questo messaggio nel log eventi dell'agent:
  • rc=2010 Questo codice di errore è associato a MQRC_DATA_LENGTH_ERROR e indica che è stato superato il valore della dimensione massima del messaggio del canale client. Per risolvere questo problema, verificare che la dimensione massima del messaggio del canale client del gestore code dell'agent sia maggiore o uguale al risultato del seguente calcolo:
    3 * (maxInputOutputMessageLength) + 1048576
    
  • rc=2030 Questo codice di errore viene associato a MQRC_MSG_TOO_BIG_FOR_Q e indica il valore della dimensione massima del messaggio di SYSTEM.FTE.STATE. <nome_agent> coda è stata superata. Per risolvere questo problema, assicurarsi che la dimensione massima del messaggio di SYSTEM.FTE.STATE. <agent_name> la coda è maggiore o uguale al risultato del seguente calcolo:
    3 * (maxInputOutputMessageLength) + 1048576
    
  • rc=2031 Questo codice motivo è associato a MQRC_MSG_TOO_BIG_FOR_Q_MGR e indica che è stato superato il valore della dimensione massima del messaggio del gestore code dell'agent. Per risolvere questo problema, verificare che la dimensione massima del messaggio del gestore code dell'agente sia maggiore o uguale al risultato del seguente calcolo:
    3 * (maxInputOutputMessageLength) + 1048576
    

Se si stanno trasferendo molti piccoli messaggi

Se la dimensione media dei messaggi da cui l'agent sta leggendo o scrivendo in una coda è inferiore a 1310 byte e l'agent sta leggendo o scrivendo più di 10000 messaggi, è necessario aumentare il numero massimo di attributi di messaggi senza commit sul gestore code o ridurre la quantità di dati in un intervallo di checkpoint.

Quando l'agent legge o scrive messaggi da una coda, i GETo PUTcorrispondenti vengono raggruppati in transazioni. Il numero di GETo PUTin una transazione è determinato dal numero richiesto per elaborare tutti i dati in un intervallo di checkpoint. La quantità approssimativa dei dati in un intervallo di checkpoint viene determinata dalle proprietà dell'agente utilizzando il calcolo seguente:
Checkpoint interval data size (in bytes) = agentCheckpointInterval  * agentFrameSize *
                                           agentWindowSize  * agentChunkSize.
La dimensione dei dati del punto di controllo predefinita è 1 * 5 * 10 * 262144 byte = 13107200 byte (12.5MB). Il numero massimo di messaggi senza commit in una transazione supportato da un gestore code è controllato dall'attributo del gestore code MaxUncommittedMsgs . Il valore predefinito di questo attributo è 10000 messaggi. Se la dimensione media del messaggio è inferiore a circa 1310 byte, il numero massimo predefinito di messaggi di cui non è stato eseguito il commit viene superato se vi sono più di 10000 messaggi da scrivere.
Se si supera il limite di MaxUncommittedMsgs , l'agent si arresta con il seguente errore nel log eventi dell'agent:
BFGSS0024E: The agent has received a reason code of '2024' from the message queue interface (MQI). 
The agent cannot continue processing and will now end.
BFGAG0139I: The agent has suspended its current transfers and is now stopping.
Il codice di errore 2024 è associato a: MQRC_SYNCPOINT_LIMIT_RAGGIUNTA.
Per risolvere questo problema, eseguire una delle seguenti azioni
  • Aumentare il valore dell'attributo del gestore code MaxUncommittedMsgs del gestore code da cui l'agent legge o scrive in una coda. Vedere MaxUncommittedMsgs (MQLONG).
  • Ridurre la quantità di dati in un intervallo di checkpoint. A tale scopo, diminuire il valore di una o più delle seguenti proprietà dell'agent:
    • agentCheckpointInterval
    • agentFrameSize
    • agentWindowSize
    • agentChunkSize
    Per informazioni su queste proprietà dell'agent, consultare Proprietà avanzate dell'agent.

Se si stanno scrivendo messaggi in una coda in modo permanente

Se si sta eseguendo il trasferimento in una coda e si stanno scrivendo i messaggi nella coda in modo permanente, potrebbe essere necessario aumentare la dimensione dello spazio file di log del gestore code per poter registrare tutti i dati in un intervallo di checkpoint.

Se si supera lo spazio file di log del gestore code, l'agent viene arrestato con il seguente errore nel log eventi dell'agent:
BFGSS0024E: The agent has received a reason code of '2102' from the message queue interface (MQI). 
The agent cannot continue processing and will now end.
BFGAG0062E: The agent has received MQI reason code '2102'.  The agent cannot continue processing and will now end.
BFGAG0061E: The agent ended abnormally
Il codice di errore '2102' corrisponde a: MQRC_RESOURCE_PROBLEM.

Per risolvere questo problema, aumentare la dimensione dello spazio file di log del gestore code dell'agente di destinazione.