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
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)
-