MainframeSupports
tip uge 7/2009:

Når det gælder brugen af MQ er problemer med timeout (MQREASON 2033) nok den største udfordring. Der kan være rigtig mange grunde til, at MQ giver timeout, når vi ikke forventer det. I dette tip vil jeg beskrive en metode, du kan bruge til at aflure MQ svartider, før de bliver til timeouts.

Med hver eneste message i MQ følger der en Message Descriptor kaldet MQMD. I dette areal findes der to felter kaldet PUTDATE og PUTTIME. De er begge 8 tegn lange og indeholder henholdsvis datoen (ÅÅÅÅMMDD) og tiden (TTMMSSHH), hvor den pågældende message blev oprettet af en MQPUT eller MQPUT1. Når dit program har udstedt en MQGET for at få fat i den pågældende message, kan du beregne, hvor længe messagen har opholdt sig på MQ-køen ved at trække PUTDATE og PUTTIME fra det aktuelle tidspunkt, hvor du foretog din MQGET.

Hvis din MQGET står og venter på, at en bestemt message dukker op, og får en timeout (MQREASON 2033), så har du ikke nogen PUTDATE/PUTTIME til rådighed, men hvis du har målinger på MQ svartiden for de foregående messages, du har ventet på, så har du en indikator for, om problemet opstod pludseligt eller svartiderne stille og roligt blev værre og værre. Måske er du nu faktisk i stand til at advare om, at der er fare for timeouts før de opstår, når du først kender MQ svartids mønstrene i din applikation. På den baggrund kan du endda automatisk iværksætte aktioner til at imødegå yderligere stigninger i svartiderne.

Du skal være opmærksom på, at metoden kun er nøjagtig ned til 1/100 sekund og kun når klokken er synkroniseret med 1/100 sekunds nøjagtighed mellem de platforme, der er involveret i MQPUT/MQGET sammenhængen. Hvis MQPUT og MQGET begge udstedes i samme sysplex kan du være 100% sikker på nøjagtigheden af dine målinger, men hvis den ene platform er en Windows server eller en UNIX server, der ikke kører på mainframen, så skal du tænke dig rigtig godt om, før du begynder at anvende dette tip. Det er jo slet ikke sikkert, at klokken på mainframen og den decentrale server går ens, og du kan hurtigt risikere at få sjove resultater som for eksempel, at svartiderne er negative.

Forrige danske tip        Last tip in english        Tip oversigten