Lade...
 

ObjectStore Server Profiling

ObjectStore® Server Profiling

Der ObjectStore Server kann so eingestellt werden, dass er Debugging und Profiling Informationen über seine Aktivitäten ausgibt. Der ObjectStore-Client kann über den ihn betreffenden Netzwerkverkehr berichten.

Interne Debugging-Informationen (Server)

Der ObjectStore Server kann unter Windows NT auf zwei Arten gestartet werden: Als Dienst und als Konsolenanwendung. Zum Starten des Dienstes dient das Dienst Applet der Systemsteuerung oder - bei Windows NT - auf Kommandozeile der Befehl

net start "ObjectStore Server R6.3"

Als Anwendung wird der Befehl

Osserver -con

verwendet. Um Debuginformationen ausgeben zu lassen gibt es ein bzw. zwei Möglichkeiten. Soll der Server von der Kommandozeile aus laufen, wird der Parameter "–d 1-9" übergeben (9 ergibt die meisten Informationen). Die Ausgabe kann wie üblich umgelenkt werden, also z.B.

Osserver –con –d 6 > c:\debug.log

Wird der Server als Dienst verwendet oder darf der Server zwischendurch nicht gestoppt werden, kann der Debugmodus auch durch den Befehl "Ossvrdebug " zur Laufzeit umgestellt werden. Die Ausgaben sind dann in der Datei <%OS_TMPDIR%>\osserver.txt zu finden.

Netzwerk-Informationen (Client)

Diese Möglichkeit der Fehlersuche ist nicht dokumentiert sondern resultiert aus Mailverkehr mit ODI. Anwendungen können bei Verwendung dieser Option deutlich langsamer werden.

Die Umgebungsvariable OS_DEBUG_NETWORK muss auf 1 gesetzt werden. Für Konsolenanwendungen kann die Ausgabe wie üblich umgelenkt werden. GUI-Applikationen blenden für jede Zeile eine Message-Box ein. Um das zu verhindern muss die Umgebungsvariable "OS_STDOUT_FILE" auf einen Dateinamen gesetzt werden. Die Netzwerkinformationen werden dann in diese Datei geschrieben. Sollen auf einem Client mehrere Anwendungen laufen und Informationen ausgeben, kann ein Bestandteil des angegebenen Namens "%d" verwendet werden. An dieser Stelle wird die Prozeß-ID der jeweiligen Anwendung eingesetzt.

Mit dem Aufruf

fileName GetManager(OBJECT) Call(SetHooks)

wird ein Protokoll wesentlicher Aktivitäten von ObjectStore zusammen mit dem InstantView®-Profiling aktiviert, d.h. man sieht neben dem Aufruf der InstantView®-Statements und den empfangenen Messages die dadurch ausgelösten Aktivitäten der Datenbank (im gleichen File).

Mit einer weiteren Funktion des Objektmanagers kann der Zugriff auf Objekte bestimmter Klassen protokolliert werden:

fileName [ Klasse1, Klasse2, ..., Klassen ] GetManager(OBJECT) Call(SetAccessHook)

wobei die Klassennamen als Zeichenketten anzugeben sind. Wenn vorher die Funktion SetHooks aufgerufen wurde, wird mit in das bereits geöffnete File geschrieben.

Beide Funktionen können nur durch Neustart des ClassiX®-Systems deaktiviert werden.

Beispiel:

Define(TestStmnt) iterate { FillWindow }; Profile „profile.log“[ „CX_PERSON“, „CX_STREET_ADDRESS“] GetManager(OBJECT) Call(SetAccessHook) FindAll(CX_PERSON)

TestStmnt produziert folgenden Output in File PROFILE.LOG:

===> TestStmnt entered (10.24.19:134) CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 0> accessed (inbound hook) CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 118> accessed (inbound hook) CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 1ec> accessed (inbound hook) CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 2c0> accessed (inbound hook) CX_STREET_ADDRESS </hs/c:/classix/projects/classix.cxd | 32 | 390> accessed (inbound hook) CX_STREET_ADDRESS </hs/c:/classix/projects/classix.cxd | 32 | 4a0> accessed (inbound hook) CX_STREET_ADDRESS </hs/c:/classix/projects/classix.cxd | 32 | 5a8> accessed (inbound hook) ===> TestStmnt leaved, duration 551 ms CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 0> committed (outbound hook) CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 118> committed (outbound hook) CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 1ec> committed (outbound hook) CX_PERSON </hs/c:/classix/projects/classix.cxd | 32 | 2c0> committed (outbound hook) CX_STREET_ADDRESS </hs/c:/classix/projects/classix.cxd | 32 | 390> committed (outbound hook) CX_STREET_ADDRESS </hs/c:/classix/projects/classix.cxd | 32 | 4a0> committed (outbound hook) CX_STREET_ADDRESS </hs/c:/classix/projects/classix.cxd | 32 | 5a8> committed (outbound hook)