<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
	<title>Load Statistic Plugin Readme</title>
    <style type="text/css">
        BODY {
            font-size : 100%;
        }
        BODY, TD, TH {
            font-family : tahoma, verdana, arial, helvetica, sans-serif;
            font-size : 0.8em;
        }
        H2 {
             font-size : 10pt;
             font-weight : bold;
        }
        A:hover {
            text-decoration : none;
        }
        H1 {
            font-family : tahoma, arial, helvetica, sans-serif;
            font-size : 1.4em;
            font-weight: bold;
            border-bottom : 1px #ccc solid;
            padding-bottom : 2px;
        }

        TT {
            font-family : courier new;
            font-weight : bold;
            color : #060;
        }
        PRE {
            font-family : courier new;
            font-size : 100%;
        }
        .events TH {
            font-size: 8pt;
            font-family: verdana;
            font-weight: bold;
            text-align: left;
            background-color: #eee;
            border-bottom: 1px #ccc solid;
        }

        .events .event {
            font-weight: bold;
        }

        .events TD {
            border-bottom: 1px #ccc dotted;
            vertical-align: top;
        }
    </style>
</head>
<body>

<h1>
Load Statistic Plugin Readme
</h1>

<h2>Overview</h2>

<p>
The statistic plugin prints usage information of the database connection pool, thread pool used for processing
incoming traffic and the NIO networking layer.
</p>

<h2>Installation</h2>

<p>
Copy the file, &quot;statistic.jar&quot; into the plugins directory of your Openfire installation. The plugin will
then be automatically deployed.
</p>

<h2>Configuration</h2>

At the moment there is no new page to configure the plugin. However, the plugin can be configured by setting
a few system properties. Read the "Using the Plugin" section to learn which system properties to use.

<h2>Using the Plugin</h2>

<p>
The plugin will collect information every few seconds and will print the collected information to a log file
every minute. The log file is a comma delimited file that can be easily processed in Excel. You can configure
the plugin by setting the system properties shown in the table below.
<p>

<table class="events" cellpadding="3" cellspacing="1" border="0">
    <thead>
        <tr>
            <th>System Property</th>
            <th>Description</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <span class="event">statistic.frequency</span>
            </td>
            <td>
                Number of milliseconds to wait before collecting information. Default value is 5000 (5 seconds)
            </td>
        </tr>
        <tr>
            <td>
                <span class="event">statistic.filename</span>
            </td>
            <td>
                Name of the file to use to store the statistics. The file will always be stored in the logs folder. Default value is "stats.txt".
            </td>
        </tr>
        <tr>
            <td>
                <span class="event">statistic.connectionmanager</span>
            </td>
            <td>
                True if statistics will be collected for Connection Managers traffic or false when statistics will be collected for clients directly connected to the server. Default value is "false".
            </td>
        </tr>
    </tbody>
</table>

<p>
The format of the log file is the following:
    <ol>
        <li><b>Timestamp</b> - Timestamp when the data was collected</li>
        <li><b>DB min</b> - Minimum number of connections the pool may have</li>
        <li><b>DB max</b> - Maximum number of connectiosn the pool may have</li>
        <li><b>DB current</b> - Current number of connections the pool has</li>
        <li><b>DB used</b> - Current number of connections being used</li>
        <li><b>Core Threads</b> - Number of threads for processing incoming traffic</li>
        <li><b>Active Threads</b> - Number of threads that are actually processing incoming traffic</li>
        <li><b>Queue Tasks</b> - Number of stanzas stored in the queue when all threads where busy</li>
        <li><b>Completed Tasks</b> - Total number of stanzas that were processed</li>
        <li><b>Sessions</b> - Current number of client sessions in the server</li>
        <li><b>NIO Read</b> - Total number of stanzas that were read</li>
        <li><b>NIO Written</b> - Total number of stanzas that were sent</li>
        <li><b>Queued NIO events</b> - Current number of stanzas that are queued. Stanzas are queued when the same client sends many stanzas and the server is still processing a previous stanza. Queued stanzas are not yet considered read.</li>
        <li><b>Queues NIO writes</b> - Current number of stanzas pending to be sent</li>
    </ol>
</p>

When processing the file in Excel you may want to add the following columns:
<ul>
    <li><b>NIO Reads Delta</b> - Difference between a <i>NIO Read</i> row and its previous row</li>
    <li><b>NIO Writtens Delta</b> - Difference between a <i>NIO Written</i> row and its previous row</li>
    <li><b>Sessions delta</b> - Difference between a <i>Sessions</i> row and its previous row</li>
</ul>

Excell charts are a great way for understanding the collected statistics. In particular, we found charts
of the following columns useful.
<ul>
    <li><b>NIO Read</b> and <b>NIO Written</b></li>
    <li><b>NIO Reads Delta</b> and <b>NIO Writtens Delta</b></li>
    <li><b>Sessions</b></li>
    <li><b>Sessions delta</b></li>
    <li><b>Completed Tasks</b></li>
    <li><b>DB used</b></li>
    <li><b>Active Threads</b></li>
</ul>

</body>
</html>