Management and Performance information using JMX or WMI

Official Content

By setting Enable Management Property (JAVA) or Instrumented Property (NET) it is possible to monitor applications to help in the 'diagnosis' of performance problems and find solutions.

As it runs, the application shows information in a console, such as variables related to the connection pool, users, cursors, statements, procedures, etc.

In Java, management it is implemented using JMX standard, which allows using any of the JMX monitors existing in the market to visualize the information. In .NET, it is implemented using WMI standard, which allows also using any of the WMI monitors existing in the market.

This document details the information shown in any JMX o WMI monitor after configuring the properties mentioned previously.

Description

There are two large "packs" implemented in order to monitor an application using WMI (.NET applications) or JMX (java applications).

1. Management pack.

This pack indicates the application current behavior. It is mainly useful in production, to establish when you have to make certain application adjustments to improve its performance.
It may be also useful to find possible errors such as lost connections, locked users, etc. Besides, the connection pool and the data cache can be monitored using the information provided by this pack.

2. Performance pack.

This pack was mainly conceived to be used before the application release, although it can be also used in production. It provides information related to the procedures and the SQL statements executed by the application.
It allows identifying the most executed procedures or statements, the ones taking more time, etc.

Within these two large packs, the information is grouped in smaller packs indicating the type of information to be shown.

Prior to go on with this article, we recommend the following reading: Connection Pooling.

Management Pack

The following are the packs within the management pack and the information shown by each one of them:

GeneXusApplicationServer

This pack is only shown when executing 3-tier applications with GeneXus application server.

Variables

DataStoreRequestCount It indicates the number of times a server class implementing the access to a dataStore was call.
RemoteProcRequestCount It indicates the number of times a server procedure was called.
StartTime It indicates the time when the server was started.
TrnRuleRequestCount It indicates the number of times a server class implementing the rules of a transaction was called.
UserCount It indicates the number of users that are currently executing the application.

Operations

shutDown It allows to shut down the applications server.


ApplicationName (Java only)

This pack is only shown when executing a 3-tier application with GeneXus application server or a Web application.

In case of a 3-tier application, there will be as many of these packs as 'Application Names' in the server.

Variables

UserCount It indicates the number of users that are currently executing this ApplicationName.


DataStore

There will be as many of these packs as DataStores defined in the 'Application Name'

Variables

ConnectAtStartUp It indicates the value of the DataStore Property: Connect to Startup.
JDBCDriver It indicates the value of the JDBC driver class.
JDBCURL It indicates the value of the URL used to get connected to the base.
MaxCursors It indicates the value of the property: 'Maximum cached cursors per Connection'.
Name It indicates the DataStore name.
PoolEnabled It indicates whether the pool is enabled or not.
PoolRecycleEnabled It indicates if the pool is recycled with specific timeouts.
PoolRecycleMin It indicates the specific timeout in minutes between each pool connections recycling.
UserName It indicates the user to get connected to the DBMS.

Operations

RecyclePool It allows recycling all the pool connections.


ConnectionPool (Java only)

There will be one for each DataStore.

Variables

ConnectionCount It indicates the current number of open pool connections.
AverageRequestPerSec It indicates the average number of times a connection to the pool has been requested per second.
AverageUserWaitingTime It indicates the average time in milliseconds while the users were waiting for a connection.
NotificationEnable It indicates whether the pool notification system is enabled or not. This value can be modified.
FreeConnectionCount It indicates the number of free pool connections.
Size It indicates the maximum size of the pool. This value can be modified. The change is taken into account only if a value higher than the current one is indicated. It matches up with the 'Size' GeneXus model property.
BeforeNotificationWaitingTime It indicates the time in milliseconds while a user can be waiting for a connection before a notification is sent, provided the notifications are enabled. This value can be modified.
UserMaxWaitingTime It indicates the maximum time in milliseconds while a user has been waiting in the pool.
CreatedConnectionCount It indicates the number of connections that have been created since the server was started (This number does not match the current number of connections, since the connections may have been recycled).
DroppedConnectionCount It indicates the number of connections that have been dropped because they had errors.
RecycledConnectionCount It indicates the number of connections that were recycled.
RequestCount It indicates the number of times a connection was requested to the pool.
WaitingUserCount It indicates the number of users that are currently waiting for the pool.
WaitedUserCount It indicates the total number of users that have waited for the pool so far
LastRequestTime It indicates the time when a connection to the pool was requested for the last time.
UnlimitedSize It indicates if the pool has unlimited size.

Operations

Recycle It allows recycling all the pool connections.
DumpPoolInformation It sends all the pool current information to a file. These files are saved in the current directory of the application server, and the name of the file is like Pool_20060822131248.xml


Notifications

A notification has an Id and a description. The following ones are available in GeneXus:

 Id Description
com.genexus.managment.fullpool The Connection Pool does not have available connections
It is sent when a user remains waiting for the pool.
com.genexus.managment.longtimeuserwaiting User waiting a connection for a long time
It is sent when a user remains waiting for the pool for a time longer than the time indicated in the property: BeforeNotificationWaitingTime.

 

Connection

There will be as many entries as connections in the pool.

Variables

PhysicalId It indicates the Id of the physical connection in the DBMS. It is useful to identify the connection when using a DBMS tool to visualize the connections.
Error It indicates if the connection had an error. 
Possible values: true or false
LastSQLStatementEnded It indicates if the last statement was already executed.
Possible values: true or false.
Id It indicates the connection logic Id.
Available It indicates whether this connection is available to be assigned (true) or not.
Note: A connection is available to be assigned to another user if the following conditions are matched:
  • OpenCursorCount = 0
  • UncommitedChanges = false
LastUserId It indicates the Id of the last user that used the connection.
RequestCount It indicates the number of request in this connection.
LastObject It indicates the last object used by the connection.
E.g.: if the last executed object was the client transaction against the default datastore, this variable will have the following value: tclientes_default
OpenCursorCount It indicates the current number of open cursors in the connection.
LastSQLStatement It indicates the last statement already executed or being executed by the connection.
LastAssignedTime It indicates the time when the connection was assigned to a user for the last time.
CreateTime It indicates the time when the connection was created.
LastSQLStatementTime It indicates the time when the last statement of the current connection was executed.
UncommitedChanges It indicates if the connection has open UTLs.

 

Operations

Disconnect It allows disconnecting a connection.
DumpConnectionInformation It sends all the connection current information to a file. These files are saved in the current directory of the application server, and the name of the file is like Connection_10350679_20060822132921.xml.

 

User

Variables

ConnectedTime It indicates the time when the user got connected.
Id It indicates the user Id.
IdleSeconds It indicates the time in seconds while the user is idle.
IP It indicates the user IP.
LastConnectionId It indicates the Id of the last connection used by the user.
LastSQLStatement It indicates the last SQL statement executed by the user.
LastSQLStatementTime It indicates the time when the last SQL statement was executed.
LastObject It indicates the last object that accessed the base executed by the user.
WaitingForConnection It indicates if the user is waiting for a connection in the pool.
WaitingForConnectionTime It indicates how long the user has been waiting for a connection in the pool.

 

Operations

Disconnect It allows disconnecting the user.

 

Cache

StorageSize It indicates the maximum size of the storage in bytes.
CurrentSize It indicates the current size in bytes.
Enabled It indicates if caching is enabled.
TimeToLive  
HitsToLive  

 

CacheItem

SQLSentence It indicates the key of the cacheitem: the sql sentence.
Paremeters It indicates the parameters of the cached sentence.
Size It indicates the total size (in bytes) of the cacheitem.
HitCount It indicates the number of hits on this cacheitem.
ExpiryHitsCount It indicates the number of expiry hits on this cacheitem.
ExpiryTime It indicates the expiry time of the cacheitem.
TimeCreated It indicates the time when the sentence was cached.


 

Performance Pack

The following are the packs within the performance pack and the information shown by each one of them:

DataStoreProviders and RemoteDataStoreProviders

It provides information on the SQL statements executed by the server. There are two types of datastore providers for 3-tier applications (remote -RemoteDataStoreProviders- and local -DataStoreProviders-). The remote ones are called from the client.

Variables

StoredProcedureCount It indicates the number of stored procedures that were executed.
TotalSQLStatementCount It indicates the total number of statements that were executed so far.
DeleteSQLStatementCount It indicates the number of Delete statements that were executed.
SQLCommandCount It indicates the number of SQL statements that were executed from GeneXus SQL command.
InsertSQLStatementCount It indicates the number of Insert statements that were executed.
SelectSQLStatementCount It indicates the number of Select statements that were executed.
UpdateSQLStatementCount It indicates the number of Update statements that were executed.


Operations

DumpDataStoresInformation It sends all the current information of the SQL statements that were executed.
  • The file remains in the applications server current directory with a name of the following type: RemoteDataStoreProviders_20050906175234.xml (or DataStoreProviders_20050906175234.xml, depending on whether you are working on the remotes or not).

 

DataStoreProvider and RemoteDataStoreProvider

It provides information on the SQL statements that were executed by a specific object. There are two types of datastore providers for 3-tier applications (remote -RemoteDataStoreProvider- and local -DataStoreProvider-). The remote ones are called from the client.

Variables

StoredProcedureCount It indicates the number of stored procedures that were executed.
TotalSQLStatementCount It indicates the total number of statements that were executed so far.
DeleteSQLStatementCount It indicates the number of Delete statements that were executed.
SQLCommandCount It indicates the number of SQL statements that were executed from GeneXus SQL command.
InsertSQLStatementCount It indicates the number of Insert statements that were executed.
SelectSQLStatementCount It indicates the number of Select statements that were executed.
UpdateSQLStatementCount It indicates the number of Update statements that were executed.


Operations

DumpDataStoreInformation It sends all the current information of the SQL statements executed by the object to a file. The file has a name of the following type: DataStoreProvider_aaltprod__default20050906180316.xml.

 

SQLStatement

It provides information of a specific SQL statement. There are two types of statements for 3-tier applications (remote and local). The remote ones are called from the client.

Variables

AverageTime It indicates the average time in milliseconds taken to execute the statement.
BestTime It indicates the best time in milliseconds taken to execute the statement.
NotificationEnabled It indicates whether the notifications system is enabled for the statement.
This value can be modified.
BeforeNotificationWaitTime It indicates the time in millisecond while a statement can be waiting for execution before a notification is sent, provided the notification system is enabled.
This value can be modified.
SQLStatement It indicates the SQL statement.
Count It indicates the number of times a statement was executed (it include cached results).
LastExecute It indicates the time when the statement was executed for the last time.
TotalTime It indicates the total time in milliseconds taken to execute all the statements.
WorstTime It indicates the worse time in milliseconds taken to execute the statement.


Notifications

Id Description
com.genexus.performance.poorperformance Poor performance in SQLStatement <SQLStatement>
It is sent when a statement takes more time than the time indicated in the property: MaxTimeForNotification.

 

Procedure

It provides information on the procedures that were executed.

Variables

AverageTime It indicates the average time in milliseconds taken to execute the procedure.
BestTime It indicates the best time in milliseconds taken to execute the procedure.
Count It indicates the number of times a procedure was executed.
LastExecute It indicates the time when the procedure was executed for the last time.
TotalTime It indicates the total time in milliseconds taken to execute all the procedures.
WorstTime It indicates the worst time in milliseconds taken to execute the procedure.


See Also

Monitoring Java applications


Was this page helpful?
What Is This?
Your feedback about this content is important. Let us know what you think.