Web Requests dashlet

For diagnosing and tuning software components that handle web requests like servlets and JSPs, AppMon uses dynamic bytecode instrumentation to capture performance metrics, including Java remoting metrics, across horizontal and vertical application layers. A central AppMon Server correlates resulting measurements to PurePaths dashlet.

The Web Requests dashlet displays the collected information about web requests.

Web Request dashlet
Web Request dashlet

Performance metrics

These columns are available in the dashlet. Not all columns display by default. To select which columns to display, right-click a column head and select or clear the columns as needed.

Column Description
Error State The first unlabeled column displays icons that indicate the overall error state of the aggregation. For example, a green icon indicates that no errors occurred in the aggregated line.
Platform The second unlabeled column displays icons that identify the software platform that executed the web request: Java or .NET.
Client or Server Indicates whether the client side (C), server side (S) or both sides (C/S) of the web request call were detected.
URI The part of the URL that identifies the web request.
Application The application associated with the web request.
Query The query part that is contained in the web request URL.
Tier The tier (Agent Group) that processed the web request.
Web Application ID For servlet requests, the name of the web application as described in the web.xml descriptor. For ASP.NET pages, the name of the virtual application.
Servlet/Page For servlet requests, the name of the servlet as specified in the web.xml descriptor. For ASP.NET pages, the name of the requested page.
Failed % The percentage of failed web requests.
Count The number of times the web request was called.
Total Avg [ms] The average time, in milliseconds, spent on the web request.
Total Sum [ms] The accumulated time, in milliseconds, spent on the web request.
Avg [bytes] Sent The average number of bytes sent as a response from the web request.
Sum [bytes] Sent The accumulated number of bytes sent as a response from all web requests.
Avg [bytes] Rcvd The average number of bytes received as a request from the web request.
Sum [bytes] Rcvd The accumulated number of bytes received as a request from all web requests.
CPU Avg [ms] The average CPU time, in milliseconds, used for all invocations of the web request.
CPU Sum [ms] The accumulated CPU time, in milliseconds, used for all invocations of the web request.
Total Min [ms] The minimum time, in milliseconds, spent in a call to this web request.
Total Max [ms] The maximum time, in milliseconds, spent in a call to this web request.
Exec Avg [ms] The average time, in milliseconds, spent to call the web request, excluding time spent in nested calls to other methods.
Exec Min [ms] The minimum time, in milliseconds, spent in a call to this web request, excluding time spent in nested calls to other methods.
Exec Max [ms] The maximum time, in milliseconds, spent in a call to this web request, excluding time spent in nested calls to other methods.
Exec Sum [ms] The accumulated time, in milliseconds, spent for all previous calls of this web request, excluding time spent in nested calls to other methods.
Min [bytes] Sent The minimum number of bytes sent as a response from the web request.
Max [bytes] Sent The maximum number of bytes sent as a response from the web request.
Min [bytes] Rcvd The minimum number of bytes received as a request to the web request.
Max [bytes] Rcvd The maximum number of bytes received as a request to the web request.
CPU Min [ms] The minimum CPU time, in milliseconds, used for an invocation of this web request.
CPU Max [ms] The maximum CPU time, in milliseconds, used for an invocation of this web request.
Web Request Response Time Avg [ms] The average time, in milliseconds, spent on this web request, including (if applicable) Servlet 3 asynchronous processing time. Asynchronous Servlet 3 web requests are indicated by the Error State icon.
Web Request Response Time Sum [ms] The accumulated time, in milliseconds, spent on this web request, including (if applicable) Servlet 3 asynchronous processing time. Asynchronous Servlet 3 web requests are indicated by the Error State icon.
Web Request Response Time Min [ms] The minimum time, in milliseconds, spent in a call to this web request, including (if applicable) Servlet 3 asynchronous processing time. Asynchronous Servlet 3 web requests are indicated by the Error State icon.
Web Request Response Time Max [ms] The maximum time, in milliseconds, spent in a call to this web request, including (if applicable) Servlet 3 asynchronous processing time. Asynchronous Servlet 3 web requests are indicated by the Error State icon .

Note

Due to limitations in the .NET Framework, the metrics related to Bytes Sent cannot be calculated for .NET and are set to zero.

Analysis options

In the Analysis tab of the Dashlet Properties dialog box, you can customize the Show, Result Limit, and Group by options.

Show

  • All: Show all web requests.
  • Entry Points: Show only web requests that are entry points.

Result Limit

The Result Limit is the maximum number of returned result values, such as invoked methods. Set a limit to shorten analysis time and save resources on the AppMon Server.

Group by

You can specify different levels of grouping to analyze the data in different granularities:

  • Application, URI and Query: Group by the application name defined in the System Profile, URI, and query.
  • Application and URI: Group by application name and URI. This is the default setting.
  • Tier, URI and Query: Group by tier (the name of the Agent Group), URI, and query.
  • Tier and URI: Group by tier and URI.
  • Web Application ID: Group by web application ID. For Java, this is the display name defined in web.xml. For ASP.NET, it is the virtual application name.
  • Web Application ID and Servlet-Name: Group by the web application ID and the name of the servlet or page.

Context menu options

The context menu includes the following options:

  • Drill Down: Right-click a PurePath and select a dashlet from the cascading menu to display information for just that PurePath in the selected dashlet.
  • Show in Dashboard: Right-click a PurePath or select multiple PurePaths, then right-click the dashlet and select from the cascading menu to open a dashboard or create a new dashboard filtered for the selected PurePath.
  • Add Snapshot to Dashboard: Display the dashlet in the selected dashboard with the time frame automatically set to last 30 minutes.
  • Comparison: Use the options on the cascading menu to configure a Compare Source, select whether to show data from the primary source or compare source, and compare data from the two sources.
  • Export: Open the Export Session dialog box to export the selected PurePaths to a user-defined session file.
  • Store Session: Create a stored session on the AppMon Server.
  • New Business Transaction: Open the Business Transaction Editor to create a new Business Transaction based on the selection-related measures. This option is only available during real-time sessions.
  • Create Measures: Open the Measure Configuration dialog box to add measures to a subscription. This option is only available during real-time sessions.
  • Result Limit: Set a result limit to shorten analysis time and save resources.
  • Show: Show All web requests or only Entry Points.
  • Group by: Select a level of grouping, as described previously.

Sensor Configuration

You can configure the URI filter sensor to reduce the number of servlets that should be analyzed for the. See Servlet Sensor or ASP.NET Sensor to learn how.

Performance tuning guidelines

Follow these guidelines to tune servlet performance:

  • Minimize Java synchronization in servlets.
  • Don't use the single thread model for servlets.
  • Use the servlet's init() method to perform expensive one-time initialization.
  • Avoid using System.out.println() calls.
  • Create sessions sparingly. Session creation is not free. If a session is not required, do not create one.
  • Use javax.servlet.http.HttpSession.invalidate() to release sessions when they are no longer needed.
  • Keep session size small, to reduce response times. If possible, keep the size below 7 KB.
  • Use the directive <%page session="false"%> in JSPs to prevent the application server from automatically creating sessions when they are not necessary.
  • Avoid large object graphs in an HttpSession. They force serialization and add computational overhead. Generally, do not store large objects as HttpSession variables.
  • Don't cache transaction data in an HttpSession. Access to data in an HttpSession is not transactional. Do not use it as a cache of transactional data, which is better kept in the database and accessed using entity beans. Transactions rollback upon failures to their original state. However, stale and inaccurate data may remain in HttpSession objects. The application server provides read-only bean-managed persistence entity beans for cached access to read-only data.
  • To improve class loading time, avoid having excessive directories in the server CLASSPATH setting. Put application-related classes into JAR files.
  • Consider that HTTP response times depend on how the keep-alive subsystem and the HTTP server are tuned in general.
  • If you are using Solaris 8, optimize SSL by using the mtmalloc library that provides a collection of malloc routines for concurrent access to heap space. To use mtmalloc:
    1. Get patch 111308-03 from Oracle and install it.
    2. Edit the startserv script located in bin/startserv for your domain, and define the LD_PRELOAD environment variable to be /usr/lib/libmtmalloc.so.
  • Consider that the exact syntax to define an environment variable depends on the shell you use.
  • Cache servlet results when possible.
  • Deploy applications that do not contain EJBs as WAR files rather than as EAR files.