GlassFish EJB Pool Statistics Test
A bean in the pool represents the pooled state in the EJB lifecycle. This means that the bean does not have an identity. The advantage of having beans in the pool is that the time to create a bean can be saved for a request. The container has mechanisms that create pool objects in the background, to save the time of bean creation on the request path.
Stateless session beans and entity beans use the EJB pool. By continuously monitoring the usage of these beans in the pools, you can accurately isolate the pools that are over-utilized - i.e., pools that do not enough free beans to service future requests - and under-utilized - i.e., pools that have too many beans than required. This test enables administrators to achieve the same. Based on the usage reports of this test, administrators can tune the pool size, so that abnormal usage patterns can be avoided.
Target of the test : A GlassFish server
Agent deploying the test : An internal/remote agent
Outputs of the test : One set of results for each EJB pool configured on the GlassFish Enterprise server being monitored.
Parameters | Description |
---|---|
Test Period |
How often should the test be executed. |
Host |
The host for which the test is to be configured. |
Port |
The port number at which the specified host listens |
JMX Remote Port |
To collect metrics from a GlassFish Enterprise server, the eG agent monitoring that server should be configured to use JMX to connect to the JRE used by the server and pull out the metrics of interest. By default, JMX support is enabled for the JRE used by the GlassFish Enterprise Server. The JMX connector listens on port 8686 by default. Therefore, type 8686 as the JMX Remote Port. If JMX listens on a different port in your environment, then specify the same here. To know the port at which JMX listens, open the domain.xml file in the <GLASSFISH_INSTALL_DIR>\Sun\AppServer\domains\domain1\config directory and look for the code block shown below: <jmx-connector accept-all="false" address="0.0.0.0" auth-realm-name="admin-realm" enabled="true" name="system" port="8686" protocol="rmi_jrmp" security-enabled="false"> The port number specified against the Port parameter in the code block above refers to the JMX Remote Port. |
JMX User, |
By default, the JMX connector on the GlassFish Enterprise Server requires authentication. To enable the eG agent to use JMX therefore, you need to configure the agent with the credentials of a user who is authorized to use JMX. Typically, the GlassFish administrator has the right to use JMX. You can hence configure the JMX User and JMX Password parameters with the credentials of the administrator. However, if you prefer not to expose the credentials of an administrator owing to security considerations, you can use the credentials of any other user with access rights to JMX. To know the name of such a user, open the domain.xml file in the <GLASSFISH_INSTALL_DIR>\Sun\AppServer\domains\domain1\config directory and look for the code block shown below: <jmx-connector accept-all="false" address="0.0.0.0" auth-realm-name="admin-realm" enabled="true" name="system" port="8686" protocol="rmi_jrmp" security-enabled="false"> The user name specified against the auth-realm-name parameter in the code block above can be configured as the JMX User, and the Password of that user can be specified against JMX Password. Confirm the JMX Password you specify by retyping that password in the Confirm Password text box. |
JNDIName |
The JNDIName is a lookup name for connecting to the JMX connector. By default, this is jmxrmi. If you have registered the JMX connector in the RMI registry using a different lookup name, then you can change this default value to reflect the same. |
JMX Provider |
This test uses a JMX Provider to access the MBean attributes of the GlassFish Enterprise server and collect metrics. Specify the package name of this JMX Provider here. By default, this is set to com.sun.jmx.remote.protocol. |
Timeout |
Specify the duration (in seconds) for which this test should wait for a response from the GlassFish Enterprise server. If there is no response from the server beyond the configured duration, the test will timeout. By default, this is set to 240 seconds. |
Measurement | Description | Measurement Unit | Interpretation |
---|---|---|---|
Total beans in pool |
Indicates the number of beans that are currently available in this pool. |
Number |
|
Total waiting threads |
Indicates the number of threads that are currently waiting for a free bean in this pool. |
Number |
A well-tuned pool is one that has enough free beans to service all user requests, and does not keep any request thread waiting for a free bean. Ideally therefore, this measure should report the value 0 for a pool. A non-zero value indicates that the corresponding pool is running out of beans. This could be because the pool is improperly sized. You may then have to resize the pool. For this, you can use any of the following parameters:
|
Loaded JMS messages |
Indicates the number of messages that are currently loaded into a JMS session in this pool during the last measurement period. |
Number |
The message-driven bean container uses the JMS service integrated into the GlassFish Server for message-driven beans that are JMS clients. The container manages a pool of message-driven beans for the concurrent processing of a stream of messages. A message-driven bean is a client to a Connector inbound resource adapter. |
Created beans in pool |
Indicates the number of beans created in this pool during the last measurement period. |
Number |
|
Destroyed beans in pool |
Indicates the number of beans destroyed in this pool during the last measurement period. |
Number |
If one/more beans in a pool violate the pool-idle-timeout-in-seconds setting of that pool - i.e., if the beans were idle for a duration longer than the pool-idle-timeout-in-seconds configuration - then such beans are destroyed, provided they are stateless session beans or message driver beans. |