Performance Monitor

In this Lesson

You will learn about the Soiree performance monitor

  • It provides detailed information about SxServer’s performance.
  • It can be used to help identify and resolve performance issues.

Concepts

After you have built and deployed a product to your customer you need some way to ensure the product is performing well – and more importantly – how to find and resolve any process that is not performing well.

There are many tools available in the Java community for monitoring or inspecting the performance characteristics of a Java virtual machine – so why does Soiree provide a performance monitor? The Soiree performance monitor augments any other tools you may be using by providing greater insight into the details of processes running in SxServer.

Here is a picture of the monitoring process. The red items are those capable of being monitored.



The server definition item contains settings for enabling the monitor and controlling the amount of information to be logged. The floor values are used to limit the amount of information captured in the log. Only those monitored activities that exceed the floor will be captured to the performance log tables. Notice that all floor times are expressed in nanoseconds (one billionth of a second). So, the default datasource query floor of 250000000 nanoseconds is 0.25 seconds.

The monitor has the ability to purge old entries from the log tables when you enable auto purge and set the number of retention days.



The performance information is stored in the following system tables

  • SoireePerfLogProcess
    Contains one entry for each process (user request), or auxiliary service whose elapsed time exceeds the process floor.
  • SoireePerfLogAgent
    Contains one entry for each monitored agent method whose elapsed time exceeds the agent floor.
  • SoireePerfLogDatasource
    Contains one entry for each monitored query whose elapsed time exceeds the datasource floor.
  • SoireePerfLogService
    Contains one entry for each auxiliary service process whose elapsed time exceeds the service floor.

The Performance Monitor Console

The console presents information from the performance log tables.



You may not be seeing everything
The process counts as well as the low, high, and average values may not reflect everything the server did during the selected timeframe. You are only seeing the logged entries for items that exceeded the floor values. You will never see queries that are not declared eligible for monitoring.
Scoping Values

The scoping values allow you to select logged information from a specific time range and solution.



Upper Right Buttons



  • Refresh Display will read from the log tables and display their current content.
  • Disable Monitor is a toggle allowing you turn the collection of information one/off (overriding the value specified in the server configuration).
  • Search allows you search for specific entries from the logs.
Search

The values at the top of the search scene allow you display entries meeting the selection criteria. If you leave the user ID blank then processes for all users will be selected. If you leave the agent ID blank then processes for all agents will be included. The agent field requires you to enter a fully qualified agent name (package + Class).



The blue values are links allowing you inspect more detail about the value. For example, selecting the 0.0005 Aux Service for process 11 shows us the Soiree client was using an auxiliary service to download the performance console scene definition.



Selecting the agent time for process 12 shows the agents executed in response to the user initiating a request to the server.



If we look at the PerformanceMonitorAgent we can see the method executed in the agent, the name of the event processed by the agent, and the subscribed values at the time of the event.



Process Performance Summary

The process performance section breaks down the processes into 7 time categories. You can see there were 8 processes that ran longer 1/10 of a second but less than 2/10ths of a second.



Selecting one of the values displays a search result list of the processes in the selected category.

Sub-process Performance

This section shows the Average, Low, and High response times of the sub-processes in the selected sample. You can see the average database access time for all processes in the process sample is 0.0069 seconds.



Auxiliary Services

This section shows the utilization of auxiliary services that were logged during the selected timeframe.



Server

This section provides summary information about the server



Journaling Floor

This section displays the current journaling floor values.



You can change these values by pressing the Modify link. The values you set here only remain in effect until the server is shut down. If you want to permanently change the floor values you must make those changes in the server configuration item.



Request Statistics

This section provides access to Jetty statistics.



Pressing the View button will display the following information



Datasource Query Log

For this example we have set the datasource floor to 0 in order to capture all monitored queries and then refreshed the monitor console display.

Process 71 took 0.0012 seconds in monitored datasource queries.



If we look at the detail of that value we see there were two queries executed by agents in the process.



The first query was opening a browse cursor.



The second query as a fetch – which was executed 157 times.



Tip
If you find a process which ran slow because of database IO you can see the queries involved and the parameters controlling their row selection.

That concludes this lesson.