Client Transaction Timings
The Client Transaction Timings feature enhances the system logs by providing more information on the durations of transactions between the client and the server. By providing information on how time was spent during the transaction, performance issues can be tracked down to the source by seeing where the time is being consumed.
The system can collect information from the following browsers:
- Internet Explorer
2 Recording Client Transactions
Client transactions are stored with other transactions in the Transaction Log Entry [syslog_transaction] table. Client transactions all have the client_transaction field set to true.
|Note: Older data is managed on this table with the table cleaner.|
2.1 Enabling Client Transaction Logging
By default, the system does not gather client transaction data. To enable client transaction set the following system properties to true.
|glide.client.track_transaction_timings||Enables the collection of client transactions.|
|glide.log.client.form.sections||Measures time rendering form sections.|
|glide.log.client.related.lists||Measures time rendering related lists.|
|glide.log.client.ui.policy||Measures time enforcing UI policies.|
|glide.log.client.script.on.load||Measures time running onLoad scripts.|
|glide.log.client.script.on.change||Measures time running onChange scripts.|
3 Client Transactions Information
The System Logs application contains a Client Transactions module, which provides a list of every logged transaction between client and server within the last day. The following information is tracked:
|Created||The moment the transaction was recorded.|
|Response Time||The number of ms spent by the server in fulfilling the transaction.|
|Business Rule Time||The number of ms spent by business rules triggered by the transaction.|
|SQL Time||The number of ms spent by the SQL database.|
|Client Response Time||(Load_completion_time) - (start_time). It is inclusive of server time.|
|Client Network Time||The number of ms spent by the network the client is connecting through.|
|Browser Time||The number of ms spent by the browser during the transaction.|
|Client Script Time||The number of ms spent executing client scripts.|
|UI Policy Time||The number of ms spent executing ui policy.|
|Type||Type of transaction (such as form or list). See Transaction Log Types.|
|Table||The table that was displayed. For example, incident, change_request.|
|View||The view for this form/list.|
3.1 Transaction Log Types
The transaction log tracks the following transaction types:
|XMLHttp||Transactions that run through GlideAjax, and the URL is xmlhttp.do.|
|Report||The page sys_report_template.do.|
|Export||When a list is exported as XML, Excel, and so forth.|
|Scheduler||When a scheduled job is performed.|
|Text Search||The text search transaction or any of its related operations.|
|Other||A generic type when no other type matches.|
3.2 Client Detailed Information
A more detailed breakdown of the client timings for all Form rendering (but not list rendering) is also tracked. To see details, drill into a particular client transaction record and observe the related list at the base of the screen.
|Order||The order during the load that this operation occurred|
|Type||The type of operation|
|Name||Descriptive name of this particular operation|
|Duration||Number of ms this particular operation took to complete|
4 Timing Values
The following diagram illustrates the timing increments for rendering a page:
The variables in this diagram are defined as follows:
|start_time||The date and time the user requests a page (the user clicks on a link). This value is set by hooking into the beforeunload event of the previous page. The beforeunload event is not properly supported by WebKit browsers, which is why the client timings are not supported on Safari or Chrome.|
|server_time|| The time in ms spent by the server processing the transaction. The server reports this value to the client.|
|load_completion_time||The date and time that the page is fully rendered in the browser. This operation is performed as the last script on the page and identifies the time the page completed loading.|
The AJAXClientTiming script include gathers and populates the following times in the Transaction Log Entry [syslog_transaction] table.
|Response Time||client_response_time|| Calculates the overall time to deliver the page by subtracting the time the user requests the page from the time the page is fully rendered in the browser.
||load_completion_time - start_time|
|Network Time||client_network_time|| Calculates the time the network takes to process the request by subtracting the time of the user's request from the time the page starts loading in the browser, and then subtracting the server processing time.
||load_time - start_time - server_time|
|Browser Time||browser_time||Calculates the time the browser takes to deliver the page by subtracting the time the page is fully rendered from the time the page starts loading in the browser.||load_completion_time - load_time|
5 Disabling Client Transactions
To disable client transaction functionality:
- Enter sys_properties.list in the application navigator filter.
- Locate the property named glide.client.track_transaction_timings.
- Set the property value to false.
The functionality can be enabled again by setting the property value to true.