Loading...
 

ObjectStore Server Profiling

ObjectStore® Server Profiling

The ObjectStore Server can be configured to provide debugging and profiling information about its activities. The ObjectStore client can report about the network traffic that affects it.

Internal debugging information (server)

The ObjectStore Server can be started under Windows NT in two ways: As a service and as a console application. To start the service, use the service applet in the control panel or - in Windows NT - on command line the command

net start "ObjectStore Server R6.3

As application the command

Osserver -con

is used. There are one or two possibilities to output debug information. If the server is to run from the command line, the parameter "-d 1-9" is passed (9 gives most of the information). The output can be redirected as usual, e.g.

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

If the server is used as a service or the server must not be stopped in between, the debug mode can also be changed at runtime by using the command "Ossvrdebug " . The output can then be <%OS_TMPDIR%>found in the file <%OS_TMPDIR%>\osserver.txt

Network Information (Client)

This possibility of troubleshooting is not documented but results from mail traffic with ODI. Applications can become significantly slower when using this option.

The OS_DEBUG_NETWORK environment variable must be set to 1. For console applications the output can be redirected as usual. GUI applications show a message box for each line. To prevent this the environment variable "OS_STDOUT_FILE" must be set to a file name. The network information is then written to this file. If several applications are to run and output information on one client, a component of the specified name "%d" can be used. The process ID of the respective application is used at this point.

With the call

 fileName GetManager(OBJECT) Call(SetHooks) 

a log of essential activities of ObjectStore is activated together with the InstantView® profiling, i.e. besides the call of the InstantView® statements and the received messages, you can see the activities of the database triggered by it (in the same file).

With another function of the object manager, access to objects of certain classes can be logged:

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

where the class names must be given as strings. If the function SetHooks has been called before, it is written into the already opened file.

Both functions can only be deactivated by restarting the ClassiX® system.

Example:

Define(TestStmnt) iterate { FillWindow }; Profile „profile.log“[ „CX_PERSON“, „CX_STREET_ADDRESS“] GetManager(OBJECT) Call(SetAccessHook) FindAll(CX_PERSON)
TestStmnt produces the following 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)