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.

name="_Toc470325428">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 <Hostname> <Level>" zur Laufzeit umgestellt werden. Die Ausgaben sind dann in der Datei <%OS_TMPDIR%>\osserver.txt zu

finden.

name="_Toc470325429">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)
 

InstantView