Frage

Wir haben eine Anwendung verbindet unter z / OS auf DB2 und nach einer Weile scheint es einige Ressourcengrenze auf dem Mainframe Seite getroffen werden wird. Da wir BIRT verwenden, scheint es die einzige Kontrolle, die wir über den JDBC-Code haben mit Strophen in der URL selbst ist. wir haben keine direkte Java Kontrolle über die Verbindung oder Anweisungen (mit Ausnahme des SQL selbst natürlich), obwohl es durch die Verwendung Javascript im Berichtsdesign möglich. So können wir schalten Sie das Debuggen mit so etwas wie:

jdbc:db2://machine.com:1234/INSTANCE:traceFile=c:/db2.txt;traceLevel=-1;

Schließlich wird die Anwendung unter Verwendung von JDBC einfach stoppen und keine weiteren Daten in die Protokolldatei geschrieben werden. Doing ein TSO NETSTAT auf dem Mainframe zeigt etwa 50 Sitzungen in ESTABLISHED Zustand.

Jetzt wissen wir, dies ein Problem auf der Mainframe Seite ist da, wenn es passiert, nicht JDBC-Verbindung zu dieser Instanz arbeitet (von jeder Client). An diesem Punkt müssen wir die Datenbank neu starten, um fortzufahren.

Ich habe gegoogelt ziemlich viele Sachen, von denen einige scheint darauf hinzudeuten, dass Sie möglicherweise begehen Abfragen , bevor Sie eine Sitzung schließen. Es kann sein, dass die Sitzungen offen gehalten werden werden, weil es etwas falsch in der BIRT schließt Code (zumindest im Hinblick darauf, was DB2 erwartet).

Hat jemand etwas Ähnliches erlebt? Wie haben Sie es zu beheben (wenn überhaupt)? Gibt es eine Möglichkeit, es zu lösen, indem nur die JDBC-URL Strophen oder Javascript-Code in dem Report-Design mit?

FWIW, wir verwenden DB2 9.1 und BIRT 2.2.1.

War es hilfreich?

Lösung

Dies wurde in einem anderen Forum tatsächlich gelöst, ich Kopieren Sie die Lösung hier für die Nachwelt.

Es stellt sich heraus, es gibt einen Parameter IDTHTOIN im DSN6FAC Abschnitt der DB2-Parameter Montage / link Job (in der Regel db2prefix .SDSNSAMP(DSNTIJUZ) wenn Ihr Setup verschieden sein können) genannt, die auf Null in unserem Fall gesetzt wurde. Dieser Parameter ist der IDLE TIME OUT für DDF Fäden und Null bedeutet „kein Timeout“.

Wenn Sie diesen Wert auf 180 gelöst unser Problem. Die Fäden, die Sperren hielten wurden stillgelegt, wenn sie keine Aktivität in diesen 3 Minuten hatten. Setzen auf weniger als 120 ist nicht sinnvoll, da die Fäden ohnehin nur alle zwei Minuten geprüft (in DB2 v9 zumindest).

Sie sollten auch CMTSTAT=INACTIVE gesetzt gut erzogene Gewinde zu schützen (jene, die ihre Ressourcen alle Sperren freigegeben haben, aber halten sich noch den Faden offen).

Beachten Sie das in Ordnung war für uns ein besonderes Problem dar, da die Fäden für Berichte waren. Ihr Verhalten war so, dass die eine Sitzung, bekam die Daten für die Berichterstattung geöffnet, dann brauchen nicht die Sitzung nicht mehr. Wenn Sie Sitzungen mit langer Laufzeit, müssen Sie vorsichtig sein (obwohl jede Sitzung, die Sperren für mehr als drei Minuten hält suspekt ist sowieso).

Sie sollten das DSNTIJUZ Mitglied bearbeiten, den Auftrag ausführen, dann ist entweder die DB2-Instanz recyceln oder SET SYSPARM auszuführen.

Durch die hilfreichen bods bei IBM Australien (West Perth Lab) für das für mich nutting aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top