Considerazioni sulla progettazione e sulle prestazioni per IBM i

Utilizzare queste informazioni per comprendere il modo in cui la progettazione dell'applicazione, i thread e l'archiviazione possono influire sulle prestazioni.

Considerazioni sulla progettazione dell'applicazione

Esistono diversi modi in cui la scarsa progettazione del programma può influire sulle prestazioni. Questi problemi possono essere difficili da rilevare perché il programma può sembrare funzionare bene, mentre influisce sulle prestazioni di altre attività. Diversi problemi specifici dei programmi che effettuano chiamate IBM® MQ for IBM i sono illustrati nelle seguenti sezioni.

Per ulteriori informazioni sulla progettazione dell'applicazione, consultare Considerazioni sulla progettazione per le applicazioni IBM MQ.

Effetto della lunghezza del messaggio
Sebbene IBM MQ for IBM i consenta ai messaggi di contenere fino a 100 MB di dati, la quantità di dati in un messaggio influenza le prestazioni dell'applicazione che elabora il messaggio. Per ottenere le migliori prestazioni dalla tua applicazione, invia solo i dati essenziali in un messaggio; ad esempio, in una richiesta di addebito di un conto bancario, le sole informazioni che potrebbero dover essere trasmesse dal client all'applicazione server sono il numero di conto e l'importo dell'addebito.
Effetto della persistenza del messaggio
I messaggi persistenti vengono registrati su giornale. La registrazione su giornale dei messaggi riduce le prestazioni dell'applicazione, quindi utilizzare i messaggi persistenti solo per i dati essenziali. Se i dati in un messaggio possono essere eliminati se il gestore code si arresta o ha esito negativo, utilizzare un messaggio non persistente.
Ricerca di un particolare messaggio
La chiamata MQGET di solito richiama il primo messaggio da una coda. Se si utilizzano gli identificativi di correlazione e messaggio (MsgId e CorrelId) nel descrittore del messaggio per specificare un determinato messaggio, il gestore code deve ricercare la coda fino a quando non trova tale messaggio. L'utilizzo della chiamata MQGET in questo modo influisce sulle prestazioni dell'applicazione.
Code che contengono messaggi di lunghezza diversa
Se i messaggi su una coda hanno lunghezze diverse, per determinare la dimensione di un messaggio, l'applicazione può utilizzare la chiamata MQGET con il campo BufferLength impostato su zero in modo che, anche se la chiamata ha esito negativo, restituisca la dimensione dei dati del messaggio. L'applicazione può quindi ripetere la chiamata, specificando l'identificativo del messaggio misurato nella prima chiamata e un buffer della dimensione corretta. Tuttavia, se ci sono altre applicazioni che servono la stessa coda, si potrebbe scoprire che le prestazioni dell'applicazione sono ridotte perché la sua seconda chiamata MQGET impiega il tempo per ricercare un messaggio che un'altra applicazione ha richiamato nel tempo tra le due chiamate.

Se l'applicazione non può utilizzare messaggi di lunghezza fissa, un'altra soluzione a questo problema consiste nell'utilizzare la chiamata MQINQ per trovare la dimensione massima dei messaggi che la coda può accettare, quindi utilizzare questo valore nella chiamata MQGET. La dimensione massima dei messaggi per una coda è memorizzata nell'attributo MaxMsgLen della coda. Questo metodo potrebbe utilizzare grandi quantità di memoria, tuttavia, perché il valore di questo attributo della coda può essere il massimo consentito da IBM MQ for IBM i, che potrebbe essere maggiore di 2 GB.

Frequenza dei punti di sincronizzazione
I programmi che emettono numerose chiamate MQPUT all'interno del punto di sincronizzazione, senza eseguirne il commit, possono causare problemi di prestazione. Le code interessate possono riempirsi di messaggi attualmente inutilizzabili, mentre altre attività potrebbero essere in attesa di ricevere questi messaggi. Questo problema ha implicazioni in termini di memoria e in termini di thread collegati alle attività che tentano di ottenere i messaggi.
Utilizzo della chiamata MQPUT1
Utilizzare la chiamata MQPUT1 solo se si dispone di un singolo messaggio da inserire in una coda. Se si desidera inserire più di un messaggio, utilizzare la chiamata MQOPEN, seguita da una serie di chiamate MQPUT e da una singola chiamata MQCLOSE.
Numero di thread in uso
Un'applicazione potrebbe richiedere molti thread. A ciascun elaborazione del gestore code viene assegnato un numero di thread massimo consentito. Se alcune applicazioni sono problematiche, potrebbe essere dovuto alla loro progettazione utilizzando troppi thread. Considerare se l'applicazione prende in considerazione questa possibilità e se intraprende azioni per arrestare o notificare questo tipo di ricorrenza. Il numero massimo di thread consentiti da IBM i è 4.095. Tuttavia, il valore predefinito è 64. IBM MQ rende disponibili fino a 63 thread per i propri processi.

Problemi di prestazioni specifici

Questa sezione spiega i problemi di storage e le scarse prestazioni.
Problemi di memoria
Se si riceve il messaggio di sistemaCPF0907. Serious storage condition may existè possibile che si stia riempiendo lo spazio associato ai gestori code IBM MQ for IBM i .
L'applicazione o IBM MQ for IBM i è in esecuzione lentamente?
Se l'applicazione è in esecuzione lentamente, potrebbe indicare che si trova in un loop o in attesa di una risorsa non disponibile. Questa esecuzione lenta potrebbe anche essere causata da un problema di prestazioni. Forse è perché il sistema sta funzionando vicino ai limiti della sua capacità. Questo tipo di problema è probabilmente peggiore nei periodi di picco di carico del sistema, in genere a metà mattina e metà pomeriggio. (Se la rete si estende su più di un fuso orario, il carico di sistema di picco potrebbe sembrare che si verifichi in un altro momento.)

Se si rileva che la riduzione delle prestazioni non dipende dal caricamento del sistema, ma accade a volte quando il sistema è leggermente caricato, è probabile che la colpa sia di un programma applicativo mal progettato. Questo problema potrebbe manifestarsi come un problema che si verifica solo quando si accede a determinate code.

QTOTJOB e QADLTOTJ sono valori di sistema che vale la pena analizzare.

I seguenti sintomi potrebbero indicare che IBM MQ for IBM i è in esecuzione lentamente:
  • Se il sistema è lento a rispondere ai comandi MQSC.
  • Se visualizzazioni ripetute della profondità della coda indicano che la coda viene elaborata lentamente per un'applicazione con cui si prevede una grande quantità di attività della coda.
  • La traccia IBM MQ è in esecuzione?