<% set_title(product_name, "Statistics List")%>

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<a id="statistics_list"></a>


This section describes the primary statistics gathered by <%=vars.product_name%> when statistics are enabled.

All statistics gathering requires the `gemfire.properties` `statistic-sampling-enabled` in `gemfire.properties` file to be true. Statistics that use time require the `gemfire.properties` `enable-time-statistics` to be true.

Performance statistics are collected for each Java application or cache server that connects to a cluster.

-   **[Cache Performance (CachePerfStats)](#section_DEF8D3644D3246AB8F06FE09A37DC5C8)**

-   **[Cache Server (CacheServerStats)](#section_EF5C2C59BFC74FFB8607F9571AB9A471)**

-   **[Client-Side Notifications (CacheClientUpdaterStats)](#section_B08C0783BBF9489E8BB48B4AEC597C62)**

-   **[Client-to-Server Messaging Performance (ClientStats)](#section_04B7D7387E584712B7710B5ED1E876BB)**

-   **[Client Connection Pool (PoolStats)](#section_6C247F61DB834C079A16BE92789D4692)**

-   **[Continuous Querying (CqQueryStats)](#section_66C0E7748501480B85209D57D24256D5)**

-   **[Delta Propagation (DeltaPropagationStatistics)](#section_D4ABED3FF94245C0BEE0F6FC9481E867)**

-   **[Disk Space Usage (DiskDirStatistics)](#section_6C2BECC63A83456190B029DEDB8F4BE3)**

-   **[Disk Store Statistics (DiskStoreStatistics)](#section_3456190B026C2BECC63A89DEDB8F4BE3)**

-   **[Disk Usage and Performance (DiskRegionStatistics)](#section_983BFC6D53C74829A04A91C39E06315F)**

-   **[Distributed System Messaging (DistributionStats)](#section_ACB4161F10D64BC0B15871D003FF6FDF)**

-   **[Distributed Lock Services (DLockStats)](#section_78D346A580724E1EA645E31626EECE40)**

-   **[Function Execution (FunctionServiceStatistics)](#section_5E211DDB0E8640689AD0A4659511E17A)**

-   **[Gateway Queue (GatewaySenderStatistics)](#section_C4199A541B1F4B82B6178C416C0FAE4B)**

-   **[Indexes (IndexStats)](#section_86A61860024B480592DAC67FFB882538)**

-   **[JVM Performance](#section_607C3867602E410CAE5FAB26A7FF1CB9)**

-   **[Locator (LocatorStats)](#section_C48B654F973E4B44AD825D459C23A6CD)**

-   **[Lucene Indexes (LuceneIndexStats)](#LuceneStats)**

-   **[Off-Heap (OffHeapMemoryStats)](#topic_ohc_tjk_w5)**

-   **[Operating System Statistics - Linux](#section_923B28F01BC3416786D3AFBD87F22A5E)**

-   **[Partitioned Regions (PartitionedRegion&lt;partitioned\_region\_name&gt;Statistics)](#section_35AC170770C944C3A336D9AEC2D2F7C5)**

-   **[Region Entry Eviction – Count-Based (LRUStatistics)](#section_374FBD92A3B74F6FA08AA23047929B4F)**

-   **[Region Entry Eviction - Heap-based eviction (HeapLRUStatistics)]()#section_3B74F6FA08A374FBD92AA23047929B4F)**

-   **[Region Entry Eviction – Size-based (MemLRUStatistics)](#section_3D2AA2BCE5B6485699A7B6ADD1C49FF7)**

-   **[Server Notifications for All Clients (CacheClientNotifierStatistics)](#section_5362EF9AECBC48D69475697109ABEDFA)**

-   **[Server Notifications for Single Client (CacheClientProxyStatistics)](#section_E03865F509E543D9B8F9462B3DA6255E)**

-   **[Server-to-Client Messaging Performance (ClientSubscriptionStats)](#section_3AB1C0AA55014163A2BBF68E13D25E3A)**

-   **[Statistics Collection (StatSampler)](#section_55F3AF6413474317902845EE4996CC21)**

## <a id="section_DEF8D3644D3246AB8F06FE09A37DC5C8" class="no-quick-link"></a>Cache Performance (CachePerfStats)

Statistics for the <%=vars.product_name%> cache. These can be used to determine the type and number of cache operations being performed and how much time they consume.

Regarding <%=vars.product_name%> cache transactions, transaction-related statistics are compiled and stored as properties in the CachePerfStats statistic resource. Because the transaction’s data scope is the cache, these statistics are collected on a per-cache basis.

The primary statistics are:

| Statistic                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `cacheListenerCallsCompleted`    | Total number of times a cache listener call has completed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `cacheListenerCallsInProgress`   | Current number of threads doing a cache listener call.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `cacheListenerCallTime`          | Total time spent doing cache listener calls.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `cacheWriterCallsCompleted`      | Total number of times a cache writer call has completed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `cacheWriterCallsInProgress`     | Current number of threads doing a cache writer call.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `cacheWriterCallTime`            | Total time spent doing cache writer calls.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `compressions`                   | Total number of compression operations.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `compressTime`                   | Total time, in nanoseconds, spent compressing data.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `conflatedEvents`                | The number of events that were conflated, and not delivered to event listeners or gateway senders on this member. Events are typically conflated because a later event was already applied to the cache, or because a concurrent event was ignored to ensure cache consistency. Note that some members may discard an update while other members apply the update, depending on the order in which each member receives the update. For this reason, the `conflatedEvents` statistic will differ for each <%=vars.product_name%> member. See [Consistency for Region Updates](../developing/distributed_regions/region_entry_versions.html#topic_CF2798D3E12647F182C2CEC4A46E2045). |
| `creates`                        | The total number of times an entry is added to this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `decompressions`                 | Total number of decompression operations.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `decompressTime`                 | Total time, in nanoseconds, spent decompressing data.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `destroys`                       | The total number of times a cache object entry has been destroyed in this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `diskTasksWaiting`                       | The current number of disk tasks, such as oplog compactions and asynchronous recoveries, that are waiting for a thread to run the operation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `eventQueueSize`                 | The number of cache events waiting to be processed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `eventQueueThrottleCount`        | The total number of times a thread was delayed in adding an event to the event queue.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `eventQueueThrottleTime`         | The total amount of time, in nanoseconds, spent delayed by the event queue throttle.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `eventThreads`                   | The number of threads currently processing events.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `getInitialImageKeysReceived`    | Total number of keys received while doing getInitialImage operations.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `getInitialImagesCompleted`      | Total number of times getInitialImages initiated by this cache have completed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `getInitialImagesInProgressDesc` | Current number of getInitialImage operations currently in progress.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `getInitialImageTime`            | Total time spent doing getInitialImages for region creation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `getsDesc`                       | The total number of times a successful get has been done on this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `getTime`                        | Total time spent doing get operations from this cache (including netsearch and netload).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `invalidates`                    | The total number of times an existing cache object entry value in this cache has been invalidated.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `loadsCompleted`                 | Total number of times a load on this cache has completed as a result of either a local get() or a remote netload.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `loadsInProgress`                | Current number of threads in this cache doing a cache load.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `loadTime`                       | Total time spent invoking loaders on this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `misses`                         | Total number of times a get on the cache did not find a value already in local memory. The number of hits (that is, gets that did not miss) can be calculated by subtracting misses from gets.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `netloadsCompleted`              | Total number of times a network load initiated on this cache has completed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `netloadsInProgress`             | Current number of threads doing a network load initiated by a get() in this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `netloadTime`                    | Total time spent doing network loads on this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `netsearchesCompleted`           | Total number of times network searches initiated by this cache have completed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `netsearchesInProgress`          | Current number of threads doing a network search initiated by a get() in this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `netsearchTimeDesc`              | Total time spent doing network searches for cache values.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `nonReplicatedTombstonesSize`    | The approximate number of bytes that are currently consumed by tombstones in non-replicated regions. See [Consistency for Region Updates](../developing/distributed_regions/region_entry_versions.html#topic_CF2798D3E12647F182C2CEC4A46E2045).                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `partitionedRegions`             | The current number of partitioned regions in the cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `postCompressedBytes`            | Total number of bytes after compressing.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `preCompressedBytes`             | Total number of bytes before compressing.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `putAlls`                        | The total number of times a map is added or replaced in this cache as a result of a local operation. Note, this only counts putAlls done explicitly on this cache; it does not count updates pushed from other caches.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `putallTime`                     | Total time spent replacing a map in this cache as a result of a local operation. This includes synchronizing on the map, invoking cache callbacks, sending messages to other caches and waiting for responses (if required).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `puts`                           | The total number of times an entry is added or replaced in this cache as a result of a local operation (put(), create(), or get() which results in load, netsearch, or netloading a value). Note, this only counts puts done explicitly on this cache; it does not count updates pushed from other caches.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `putTime`                        | Total time spent adding or replacing an entry in this cache as a result of a local operation. This includes synchronizing on the map, invoking cache callbacks, sending messages to other caches, and waiting for responses (if required).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `queryExecutions`                | Total number of times some query has been executed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `queryExecutionTime`             | Total time spent executing queries.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `regions`                        | The current number of regions in the cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `replicatedTombstonesSize`       | The approximate number of bytes that are currently consumed by tombstones in replicated or partitioned regions. See [Consistency for Region Updates](../developing/distributed_regions/region_entry_versions.html#topic_CF2798D3E12647F182C2CEC4A46E2045).                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `tombstoneCount`                 | The total number of tombstone entries created for performing concurrency checks. See [Consistency for Region Updates](../developing/distributed_regions/region_entry_versions.html#topic_CF2798D3E12647F182C2CEC4A46E2045).                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `tombstoneGCCount`               | The total number of tombstone garbage collection cycles that a member has performed. See [Consistency for Region Updates](../developing/distributed_regions/region_entry_versions.html#topic_CF2798D3E12647F182C2CEC4A46E2045).                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `txCommitChanges`                | Total number of changes made by committed transactions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `txCommits`                      | Total number of times a transaction commit has succeeded.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `txCommitTime`                   | The total amount of time, in nanoseconds, spent doing successful transaction commits.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `txConflictCheckTime`            | The total amount of time, in nanoseconds, spent doing conflict checks during transaction commit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `txFailedLifeTime`               | The total amount of time, in nanoseconds, spent in a transaction before a failed commit. The time measured starts at transaction begin and ends when commit is called.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `txFailureChanges`               | Total number of changes lost by failed transactions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `txFailures`                     | Total number of times a transaction commit has failed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `txFailureTime`                  | The total amount of time, in nanoseconds, spent doing failed transaction commits.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `txRollbackChanges`              | Total number of changes lost by explicit transaction rollbacks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `txRollbackLifeTime`             | The total amount of time, in nanoseconds, spent in a transaction before an explicit rollback. The time measured starts at transaction begin and ends when rollback is called.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `txRollbacks`                    | Total number of times a transaction has been explicitly rolled back.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `txRollbackTime`                 | The total amount of time, in nanoseconds, spent doing explicit transaction rollbacks.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `txSuccessLifeTime`              | The total amount of time, in nanoseconds, spent in a transaction before a successful commit. The time measured starts at transaction begin and ends when commit is called.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `updates`                        | The total number of updates originating remotely that have been applied to this cache.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `updateTime`                     | Total time spent performing an update.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

## <a id="section_EF5C2C59BFC74FFB8607F9571AB9A471" class="no-quick-link"></a>Cache Server (CacheServerStats)

Statistics used for cache servers and for gateway receivers are recorded in CacheServerStats in a cache server. The primary statistics are:

| Statistic                                 | Description                                                                                                                                    |
|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|
| `abandonedReadRequests`                   | Number of read operations (requests) abandoned by clients.                                                                                     |
| `abandonedWriteRequests`                  | Number of write operations (requests) abandoned by clients.                                                                                    |
| `acceptsInProgress`                       | Current number of server accepts that are attempting to do the initial handshake with the client.                                              |
| `acceptThreadStarts`                      | Total number of threads created (starts) to deal with an accepted socket. Note, this is not the current number of threads.                     |
| `batchSize`                               | The size (in bytes) of the batches received.                                                                                                   |
| `clearRegionRequests`                     | Number of cache client operations clearRegion requests.                                                                                        |
| `clearRegionResponses`                    | Number of clearRegion responses written to the cache client.                                                                                   |
| `clientNotificationRequests`              | Number of cache client operations notification requests.                                                                                       |
| `clientReadyRequests`                     | Number of cache client ready requests.                                                                                                         |
| `clientReadyResponses`                    | Number of client ready responses written to the cache client.                                                                                  |
| `closeConnectionRequests`                 | Number of cache client close connection operations requests.                                                                                   |
| `connectionLoad`                          | The load from client to server connections as reported by the load probe installed in this server.                                             |
| `connectionsTimedOut`                     | Total number of connections that have been timed out by the server because of client inactivity.                                               |
| `connectionThreads`                       | Current number of threads dealing with a client connection.                                                                                    |
| `connectionThreadStarts`                  | Total number of threads created (starts) to deal with a client connection. Note, this is not the current number of threads.                    |
| `containsKeyRequests`                     | Number of cache client operations containsKey requests.                                                                                        |
| `containsKeyResponses`                    | Number of containsKey responses written to the cache client.                                                                                   |
| `currentClientConnections`                | Number of sockets accepted.                                                                                                                    |
| `currentClients`                          | Number of client virtual machines (clients) connected.                                                                                         |
| `destroyRegionRequests`                   | Number of cache client operations destroyRegion requests.                                                                                      |
| `destroyRegionResponses`                  | Number of destroyRegion responses written to the cache client.                                                                                 |
| `destroyRequests`                         | Number of cache client operations destroy requests.                                                                                            |
| `destroyResponses`                        | Number of destroy responses written to the cache client.                                                                                       |
| `failedConnectionAttempts`                | Number of failed connection attempts.                                                                                                          |
| `getRequests`                             | Number of cache client operations get requests.                                                                                                |
| `getResponses`                            | Number of getResponses written to the cache client.                                                                                            |
| `loadPerConnection`                       | The estimate of how much load is added for each new connection as reported by the load probe installed in this server.                         |
| `loadPerQueue`                            | The estimate of how much load would be added for each new subscription connection as reported by the load probe installed in this server.      |
| `messageBytesBeingReceived`               | Current number of bytes consumed by messages being received or processed.                                                                      |
| `messagesBeingReceived`                   | Current number of messages being received off the network or being processed after reception.                                                  |
| `outOfOrderGatewayBatchIds`               | Number of Out of Order batch IDs (batches).                                                                                                    |
| `processBatchRequests`                    | Number of cache client operations processBatch requests.                                                                                       |
| `processBatchResponses`                   | Number of processBatch responses written to the cache client.                                                                                  |
| `processBatchTime`                        | Total time, in nanoseconds, spent in processing a cache client processBatch request.                                                           |
| `processClearRegionTime`                  | Total time, in nanoseconds, spent in processing a cache client clearRegion request, including the time to clear the region from the cache.     |
| `processClientNotificationTime`           | Total time, in nanoseconds, spent in processing a cache client notification request.                                                           |
| `processClientReadyTime`                  | Total time, in nanoseconds, spent in processing a cache client ready request, including the time to destroy an object from the cache.          |
| `processCloseConnectionTime`              | Total time, in nanoseconds, spent in processing a cache client close connection request.                                                       |
| `processContainsKeyTime`                  | Total time spent, in nanoseconds, processing a containsKey request.                                                                            |
| `processDestroyRegionTime`                | Total time, in nanoseconds, spent in processing a cache client destroyRegion request, including the time to destroy the region from the cache. |
| `processDestroyTime`                      | Total time, in nanoseconds, spent in processing a cache client destroy request, including the time to destroy an object from the cache.        |
| `processGetTime`                          | Total time, in nanoseconds, spent in processing a cache client get request, including the time to get an object from the cache.                |
| `processPutAllTime`                       | Total time, in nanoseconds, spent in processing a cache client putAll request, including the time to put all objects into the cache.           |
| `processPutTime`                          | Total time, in nanoseconds, spent in processing a cache client put request, including the time to put an object into the cache.                |
| `processQueryTime`                        | Total time, in nanoseconds, spent in processing a cache client query request, including the time to destroy an object from the cache.          |
| `processUpdateClientNotificationTime`     | Total time, in nanoseconds, spent in processing a client notification update request.                                                          |
| `putAllRequests`                          | Number of cache client operations putAll requests.                                                                                             |
| `putAllResponses`                         | Number of putAllResponses written to the cache client.                                                                                         |
| `putRequests`                             | Number of cache client operations put requests.                                                                                                |
| `putResponses`                            | Number of putResponses written to the cache client.                                                                                            |
| `queryRequests`                           | Number of cache client operations query requests.                                                                                              |
| `queryResponses`                          | Number of query responses written to the cache client.                                                                                         |
| `queueLoad`                               | The load from subscription queues as reported by the load probe installed in this server                                                       |
| `readClearRegionRequestTime`              | Total time, in nanoseconds, spent in reading clearRegion requests.                                                                             |
| `readClientNotificationRequestTime`       | Total time, in nanoseconds, spent in reading client notification requests.                                                                     |
| `readClientReadyRequestTime`              | Total time, in nanoseconds, spent in reading cache client ready requests.                                                                      |
| `readCloseConnectionRequestTime`          | Total time, in nanoseconds, spent in reading close connection requests.                                                                        |
| `readContainsKeyRequestTime`              | Total time, in nanoseconds, spent reading containsKey requests.                                                                                |
| `readDestroyRegionRequestTime`            | Total time, in nanoseconds, spent in reading destroyRegion requests.                                                                           |
| `readDestroyRequestTime`                  | Total time, in nanoseconds, spent in reading destroy requests.                                                                                 |
| `readGetRequestTime`                      | Total time, in nanoseconds, spent in reading get requests.                                                                                     |
| `readProcessBatchRequestTime`             | Total time, in nanoseconds, spent in reading processBatch requests.                                                                            |
| `readPutAllRequestTime`                   | Total time, in nanoseconds, spent in reading putAll requests.                                                                                  |
| `readPutRequestTime`                      | Total time, in nanoseconds, spent in reading put requests.                                                                                     |
| `readQueryRequestTime`                    | Total time, in nanoseconds, spent in reading query requests.                                                                                   |
| `readUpdateClientNotificationRequestTime` | Total time, in nanoseconds, spent in reading client notification update requests.                                                              |
| `receivedBytes`                           | Total number of bytes received from clients.                                                                                                   |
| `sentBytes`                               | Total number of bytes sent to clients.                                                                                                         |
| `threadQueueSize`                         | Current number of connections waiting for a thread to start processing their message.                                                          |
| `updateClientNotificationRequests`        | Number of cache client notification update requests.                                                                                           |
| `writeClearRegionResponseTime`            | Total time, in nanoseconds, spent in writing clearRegion responses.                                                                            |
| `writeClientReadyResponseTime`            | Total time, in nanoseconds, spent in writing client ready responses.                                                                           |
| `writeContainsKeyResponseTime`            | Total time, in nanoseconds, spent writing containsKey responses.                                                                               |
| `writeDestroyRegionResponseTime`          | Total time, in nanoseconds, spent in writing destroyRegion responses.                                                                          |
| `writeDestroyResponseTime`                | Total time, in nanoseconds, spent in writing destroy responses.                                                                                |
| `writeGetResponseTime`                    | Total time, in nanoseconds, spent in writing get responses.                                                                                    |
| `writeProcessBatchResponseTime`           | Total time, in nanoseconds, spent in writing processBatch responses.                                                                           |
| `writePutAllResponseTime`                 | Total time, in nanoseconds, spent in writing putAll responses.                                                                                 |
| `writePutResponseTime`                    | Total time, in nanoseconds, spent in writing put responses.                                                                                    |
| `writeQueryResponseTime`                  | Total time, in nanoseconds, spent in writing query responses.                                                                                  |

## <a id="section_B08C0783BBF9489E8BB48B4AEC597C62" class="no-quick-link"></a>Client-Side Notifications (CacheClientUpdaterStats)

Statistics in a client that pertain to server-to-client data pushed from the server over a queue to the client (they are the client side of the server’s `CacheClientNotifierStatistics`) :

| Statistic                   | Description                                                                                  |
|-----------------------------|----------------------------------------------------------------------------------------------|
| `receivedBytes`             | Total number of bytes received from the server.                                              |
| `messagesBeingReceived`     | Current number of message being received off the network or being processed after reception. |
| `messageBytesBeingReceived` | Current number of bytes consumed by messages being received or processed.                    |

## <a id="section_04B7D7387E584712B7710B5ED1E876BB" class="no-quick-link"></a>Client-to-Server Messaging Performance (ClientStats & ClientSendStats)

These statistics are in a client and they describe all the messages sent from the client to a specific server. The primary statistics of ClientStats are:

| Statistic                              | Description                                                                                   |
|----------------------------------------|-----------------------------------------------------------------------------------------------|
| `clearFailures`                        | Total number of clear attempts that have failed.                                              |
| `clears`                               | Total number of clears completed successfully.                                                |
| `clearsInProgress`                     | Current number of clears being executed.                                                      |
| `clearTime`                            | Total amount of time, in nanoseconds, spent doing clears.                                     |
| `clearTimeouts`                        | Total number of clear attempts that have timed out.                                           |
| `closeConFailures`                     | Total number of closeCon attempts that have failed.                                           |
| `closeCons`                            | Total number of closeCons that have completed successfully.                                   |
| `closeConsInProgress`                  | Current number of closeCons being executed.                                                   |
| `closeConTime`                         | Total amount of time, in nanoseconds, spent doing closeCons.                                  |
| `closeConTimeouts`                     | Total number of closeCon attempts that have timed out.                                        |
| `connections`                          | Current number of connections.                                                                |
| `connects`                             | Total number of times a connection has been created.                                          |
| `containsKeyFailures`                  | Total number of containsKey attempts that have failed.                                        |
| `containsKeys`                         | Total number of containsKeys that completed successfully.                                     |
| `containsKeysInProgress`               | Current number of containsKeys being executed.                                                |
| `containsKeyTime`                      | Total amount of time, in nanoseconds, spent doing containsKeys.                               |
| `containsKeyTimeouts`                  | Total number of containsKey attempts that have timed out.                                     |
| `destroyFailures`                      | Total number of destroy attempts that have failed.                                            |
| `destroyRegionFailures`                | Total number of destroyRegion attempts that have failed.                                      |
| `destroyRegions`                       | Total number of destroyRegions that have completed successfully.                              |
| `destroyRegionsInProgress`             | Current number of destroyRegions being executed.                                              |
| `destroyRegionTime`                    | Total amount of time, in nanoseconds, spent doing destroyRegions.                             |
| `destroyRegionTimeouts`                | Total number of destroyRegion attempts that have timed out.                                   |
| `destroys`                             | Total number of destroys that have completed successfully.                                    |
| `destroysInProgress`                   | Current number of destroys being executed.                                                    |
| `destroyTime`                          | Total amount of time, in nanoseconds, spent doing destroys.                                   |
| `destroyTimeouts`                      | Total number of destroy attempts that have timed out.                                         |
| `disconnects`                          | Total number of times a connection has been destroyed.                                        |
| `gatewayBatchFailures`                 | Total number of gatewayBatch attempts that have failed.                                       |
| `gatewayBatchs`                        | Total number of gatewayBatchs completed successfully.                                         |
| `gatewayBatchsInProgress`              | Current number of gatewayBatchs being executed.                                               |
| `gatewayBatchTime`                     | Total amount of time, in nanoseconds, spent doing gatewayBatchs.                              |
| `gatewayBatchTimeouts`                 | Total number of gatewayBatch attempts that have timed out.                                    |
| `getAllFailures`                       | Total number of getAll attempts that have failed.                                             |
| `getAlls`                              | Total number of getAlls that have completed successfully.                                     |
| `getAllsInProgress`                    | Current number of getAlls being executed.                                                     |
| `getAllTime`                           | Total amount of time, in nanoseconds, spent doing getAlls.                                    |
| `getAllTimeouts`                       | Total number of getAll attempts that have timed out.                                          |
| `getFailures`                          | Total number of get attempts that have failed.                                                |
| `gets`                                 | Total number of gets that have completed successfully.                                        |
| `getsInProgress`                       | Current number of gets being executed.                                                        |
| `getTime`                              | Total amount of time, in nanoseconds, spent doing gets.                                       |
| `getTimeouts`                          | Total number of get attempts that have timed out.                                             |
| `keySetFailures`                       | Total number of keySet attempts that have failed.                                             |
| `keySets`                              | Total number of keySets that have completed successfully.                                     |
| `keySetsInProgress`                    | Current number of keySets being executed.                                                     |
| `keySetTime`                           | Total amount of time, in nanoseconds, spent doing keySets.                                    |
| `keySetTimeouts`                       | Total number of keySet attempts that have timed out.                                          |
| `makePrimaryFailures`                  | Total number of makePrimary attempts that have failed.                                        |
| `makePrimarys`                         | Total number of makePrimarys that have completed successfully.                                |
| `makePrimarysInProgress`               | Current number of makePrimarys being executed.                                                |
| `makePrimaryTime`                      | Total amount of time, in nanoseconds, spent doing makePrimarys.                               |
| `makePrimaryTimeouts`                  | Total number of makePrimary attempts that have timed out.                                     |
| `messageBytesBeingReceived`            | Current number of bytes consumed by messages being received or processed.                     |
| `messagesBeingReceived`                | Current number of messages being received off the network or being processed after reception. |
| `opFailures`                           | Total number of op attempts that have failed.                                                 |
| `ops`                                  | Total number of ops that have completed successfully.                                         |
| `opsInProgress`                        | Current number of ops being executed.                                                         |
| `opTime`                               | Total amount of time, in nanoseconds, spent doing ops.                                        |
| `opTimeouts`                           | Total number of op attempts that have timed out.                                              |
| `pingFailures`                         | Total number of ping attempts that have failed.                                               |
| `pings`                                | Total number of pings that have completed successfully.                                       |
| `pingsInProgress`                      | Current number of pings being executed.                                                       |
| `pingTime`                             | Total amount of time, in nanoseconds, spent doing pings.                                      |
| `pingTimeouts`                         | Total number of ping attempts that have timed out.                                            |
| `primaryAckFailures`                   | Total number of primaryAck attempts that have failed.                                         |
| `primaryAcks`                          | Total number of primaryAcks that have completed successfully.                                 |
| `primaryAckTime`                       | Total amount of time, in nanoseconds, spent doing primaryAcks.                                |
| `primaryAckTimeouts`                   | Total number of primaryAck attempts that have timed out.                                      |
| `putAllFailures`                       | Total number of putAll attempts that have failed.                                             |
| `putAlls`                              | Total number of putAlls that have completed successfully.                                     |
| `putAllsInProgress`                    | Current number of putAlls being executed.                                                     |
| `putAllTime`                           | Total amount of time, in nanoseconds, spent doing putAlls.                                    |
| `putAllTimeouts`                       | Total number of putAll attempts that have timed out.                                          |
| `putFailures`                          | Total number of put attempts that have failed.                                                |
| `puts`                                 | Total number of puts that have completed successfully.                                        |
| `putsInProgress`                       | Current number of puts being executed.                                                        |
| `putTime`                              | Total amount of time, in nanoseconds, spent doing puts.                                       |
| `putTimeouts`                          | Total number of put attempts that have timed out.                                             |
| `queryFailures`                        | Total number of query attempts that have failed.                                              |
| `querys`                               | Total number of querys completed successfully.                                                |
| `querysInProgress`                     | Current number of querys being executed.                                                      |
| `queryTime`                            | Total amount of time, in nanoseconds. spent doing querys.                                     |
| `queryTimeouts`                        | Total number of query attempts that have timed out.                                           |
| `readyForEvents`                       | Total number of readyForEventss that have completed successfully.                             |
| `readyForEventsFailures`               | Total number of readyForEvents attempts that have failed.                                     |
| `readyForEventsInProgress`             | Current number of readyForEventss being executed                                              |
| `readyForEventsTime`                   | Total amount of time, in nanoseconds, spent doing readyForEvents.                             |
| `readyForEventsTimeouts`               | Total number of readyForEvents attempts that have timed out.                                  |
| `receivedBytes`                        | Total number of bytes received from the server.                                               |
| `registerInstantiators`                | Total number of registerInstantiators completed successfully                                  |
| `registerInstantiatorsFailures`        | Total number of registerInstantiators attempts that have failed.                              |
| `registerInstantiatorssInProgress`     | Current number of registerInstantiators being executed                                        |
| `registerInstantiatorsTime`            | Total amount of time, in nanoseconds, spent doing registerInstantiators.                      |
| `registerInstantiatorsTimeouts`        | Total number of registerInstantiators attempts that have timed out.                           |
| `registerInterestFailures`             | Total number of registerInterest attempts that have failed.                                   |
| `registerInterests`                    | Total number of registerInterests that have completed successfully.                           |
| `registerInterestsInProgress`          | Current number of registerInterests being executed.                                           |
| `registerInterestTime`                 | Total amount of time, in nanoseconds, spent doing registerInterests.                          |
| `registerInterestTimeouts`             | Total number of registerInterest attempts that have timed out.                                |
| `sentBytes`                            | Total number of bytes sent to the server.                                                     |
| `unregisterInterestFailures`           | Total number of unregisterInterest attempts that have failed.                                 |
| `unregisterInterests`                  | Total number of unregisterInterests that have completed successfully                          |
| `unregisterInterestsInProgress`        | Current number of unregisterInterests being executed.                                         |
| `unregisterInterestTime`               | Total amount of time, in nanoseconds, spent doing unregisterInterests.                        |
| `unregisterInterestTimeouts`           | Total number of unregisterInterest attempts that have timed out.                              |

The primary statistics of ClientSendStats are:

| Statistic                                     | Description                                                                                                                                                         |
|-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `addPdxTypeSendFailures`                      | Total number of addPdxType operation's request messages not sent successfully from the client to server.                                                            |
| `addPdxTypeSendsSuccessful`                   | Total number of addPdxType operation's request messages sent successfully from the client to server.                                                                |
| `addPdxTypeSendsInProgress`                   | Current number of addPdxType operation's request messages being send from the client to server.                                                                     |
| `addPdxTypeSendTime`                          | Total amount of time, in nanoseconds spent sending addPdxType operation's request messages successfully/unsuccessfully from the client to server.                   |
| `clearSendFailures`                           | Total number of clearSends that have failed.                                                                                                                        |
| `clearSends`                                  | Total number of clearSends that have completed successfully.                                                                                                        |
| `clearSendsInProgress`                        | Current number of clearSends being executed.                                                                                                                        |
| `clearSendTime`                               | Total amount of time, in nanoseconds, spent doing clearSends.                                                                                                       |
| `closeConSendFailures`                        | Total number of closeConSends that have failed.                                                                                                                     |
| `closeConSends`                               | Total number of closeConSends that have completed successfully.                                                                                                     |
| `closeConSendsInProgress`                     | Current number of closeConSends being executed.                                                                                                                     |
| `closeConSendTime`                            | Total amount of time, in nanoseconds, spent doing closeConSends.                                                                                                    |
| `closeCQSendFailures`                         | Total number of closeCQ sends that have failed.                                                                                                                     |
| `closeCQSends`                                | Total number of closeCQ sends that have completed successfully.                                                                                                     |
| `closeCQSendsInProgress`                      | Current number of closeCQ sends being executed.                                                                                                                     |
| `closeCQSendTime`                             | Total amount of time, in nanoseconds spent doing closeCQ sends.                                                                                                     |
| `createCQSendFailures`                        | Total number of createCQ sends that have failed.                                                                                                                    |
| `createCQSends`                               | Total number of createCQ sends that have completed successfully.                                                                                                    |
| `createCQSendsInProgress`                     | Current number of createCQ sends being executed.                                                                                                                    |
| `createCQSendTime`                            | Total amount of time, in nanoseconds spent doing createCQ sends.                                                                                                    |
| `commitSendFailures`                          | Total number of commit sends that have failed.                                                                                                                      |
| `commitSends`                                 | Total number of commit sends that have completed successfully.                                                                                                      |
| `commitSendsInProgress`                       | Current number of commit sends being executed.                                                                                                                      |
| `commitSendTime`                              | Total amount of time, in nanoseconds spent doing commits.                                                                                                           |
| `containsKeySendFailures`                     | Total number of containsKeySends that have failed.                                                                                                                  |
| `containsKeySends`                            | Total number of containsKeySends that have completed successfully.                                                                                                  |
| `containsKeySendsInProgress`                  | Current number of containsKeySends being executed.                                                                                                                  |
| `containsKeySendTime`                         | Total amount of time, in nanoseconds, spent doing containsKeyends.                                                                                                  |
| `destroyRegionSendFailures`                   | Total number of destroyRegionSends that have failed.                                                                                                                |
| `destroyRegionSends`                          | Total number of destroyRegionSends that have completed successfully.                                                                                                |
| `destroyRegionSendsInProgress`                | Current number of destroyRegionSends being executed.                                                                                                                |
| `destroyRegionSendTime`                       | Total amount of time, in nanoseconds, spent doing destroyRegionSends.                                                                                               |
| `destroySendFailures`                         | Total number of destroySends that have failed.                                                                                                                      |
| `destroySends`                                | Total number of destroySends that have completed successfully.                                                                                                      |
| `destroySendsInProgress`                      | Current number of destroySends being executed.                                                                                                                      |
| `destroySendTime`                             | Total amount of time, in nanoseconds, spent doing destroySends.                                                                                                     |
| `executeFunctionSendFailures`                 | Total number of Function sends that have failed.                                                                                                                    |
| `executeFunctionSends`                        | Total number of Function sends that have completed successfully.                                                                                                    |
| `executeFunctionSendsInProgress`              | Current number of Function sends being executed.                                                                                                                    |
| `executeFunctionSendTime`                     | Total amount of time, in nanoseconds spent doing Function sends.                                                                                                    |
| `gatewayBatchSendFailures`                    | Total number of gatewayBatchSends that have failed.                                                                                                                 |
| `gatewayBatchSends`                           | Total number of gatewayBatchSends that have completed successfully.                                                                                                 |
| `gatewayBatchSendsInProgress`                 | Current number of gatewayBatchSends being executed.                                                                                                                 |
| `gatewayBatchSendTime`                        | Total amount of time, in nanoseconds, spent doing gatewayBatchSends.                                                                                                |
| `getAllSendFailures`                          | Total number of getAllSends that have failed.                                                                                                                       |
| `getAllSends`                                 | Total number of getAllSends that have completed successfully.                                                                                                       |
| `getAllSendsInProgress`                       | Current number of getAllSends being executed.                                                                                                                       |
| `getAllSendTime`                              | Total amount of time, in nanoseconds, spent doing getAllSends.                                                                                                      |
| `getClientPartitionAttributesSendFailures`    | Total number of getClientPartitionAttributes operation's request messages not sent successfully from the client to server.                                          |
| `getClientPartitionAttributesSendsInProgress` | Current number of getClientPartitionAttributes operation's request messages being send from the client to server.                                                   |
| `getClientPartitionAttributesSendsSuccessful` | Total number of getClientPartitionAttributes operation's request messages sent successfully from the client to server.                                              |
| `getClientPartitionAttributesSendTime`        | Total amount of time, in nanoseconds spent sending getClientPartitionAttributes operation's request messages successfully/unsuccessfully from the client to server. |
| `getClientPRMetadataSendFailures`             | Total number of getClientPRMetadata operation's request messages not sent successfully from the client to server.                                                   |
| `getClientPRMetadataSendsInProgress`          | Current number of getClientPRMetadata operation's request messages being send from the client to server.                                                            |
| `getClientPRMetadataSendsSuccessful`          | Total number of getClientPRMetadata operation's request messages sent successfully from the client to server.                                                       |
| `getClientPRMetadataSendTime`                 | Total amount of time, in nanoseconds spent sending getClientPRMetadata operation's request messages successfully/unsuccessfully from the client to server.          |
| `getPDXIdForTypeSendFailures`                 | Total number of getPDXIdForType operation's request messages not sent successfully from the client to server.                                                       |
| `getPDXIdForTypeSendsInProgress`              | Current number of getPDXIdForType operation's request messages being send from the client to server.                                                                |
| `getPDXIdForTypeSendsSuccessful`              | Total number of getPDXIdForType operation's request messages sent successfully from the client to server.                                                           |
| `getPDXIdForTypeSendTime`                     | Total amount of time, in nanoseconds spent sending getPDXIdForType operation's request messages successfully/unsuccessfully from the client to server.              |
| `getPDXTypeByIdSendFailures`                  | Total number of getPDXTypeById operation's request messages not sent successfully from the client to server.                                                        |
| `getPDXTypeByIdSendsInProgress`               | Current number of getPDXTypeById operation's request messages being send from the client to server.                                                                 |
| `getPDXTypeByIdSendsSuccessful`               | Total number of getPDXTypeById operation's request messages sent successfully from the client to server.                                                            |
| `getPDXTypeByIdSendTime`                      | Total amount of time, in nanoseconds spent sending getPDXTypeById operation's request messages successfully/unsuccessfully from the client to server.               |
| `getEntrySendFailures`                        | Total number of getEntry sends that have failed.                                                                                                                    |
| `getEntrySends`                               | Total number of getEntry sends that have completed successfully.                                                                                                    |
| `getEntrySendsInProgress`                     | Current number of getEntry sends being executed.                                                                                                                    |
| `getEntrySendTime`                            | Total amount of time, in nanoseconds spent sending getEntry messages.                                                                                               |
| `getDurableCQsSendFailures`                   | Total number of getDurableCQs sends that have failed.                                                                                                               |
| `getDurableCQsSends`                          | Total number of getDurableCQs sends that have completed successfully.                                                                                               |
| `getDurableCQsSendsInProgress`                | Current number of getDurableCQs sends being executed.                                                                                                               |
| `getDurableCQsSendTime`                       | Total amount of time, in nanoseconds spent doing getDurableCQs sends.                                                                                               |
| `getSendFailures`                             | Total number of getSends that have failed.                                                                                                                          |
| `getSends`                                    | Total number of getSends that have completed successfully.                                                                                                          |
| `getSendsInProgress`                          | Current number of getSends being executed.                                                                                                                          |
| `getSendTime`                                 | Total amount of time, in nanoseconds, spent doing getSends.                                                                                                         |
| `invalidateSendFailures`                      | Total number of invalidate sends that have failed.                                                                                                                  |
| `invalidateSends`                             | Total number of invalidate sends that have completed successfully.                                                                                                  |
| `invalidateSendsInProgress`                   | Current number of invalidate sends being executed.                                                                                                                  |
| `invalidateSendTime`                          | Total amount of time, in nanoseconds spent doing invalidates.                                                                                                       |
| `jtaSynchronizationSendFailures`              | Total number of jtaSynchronization sends that have failed.                                                                                                          |
| `jtaSynchronizationSends`                     | Total number of jtaSynchronization sends that have completed successfully.                                                                                          |
| `jtaSynchronizationSendsInProgress`           | Current number of jtaSynchronization sends being executed.                                                                                                          |
| `jtaSynchronizationSendTime`                  | Total amount of time, in nanoseconds spent doing jtaSynchronizations.                                                                                               |
| `keySetSendFailures`                          | Total number of keySetSends that have failed.                                                                                                                       |
| `keySetSends`                                 | Total number of keySetSends that have completed successfully.                                                                                                       |
| `keySetSendsInProgress`                       | Current number of keySetSends being executed.                                                                                                                       |
| `keySetSendTime`                              | Total amount of time, in nanoseconds, spent doing keySetSends.                                                                                                      |
| `makePrimarySendFailures`                     | Total number of makePrimarySends that have failed.                                                                                                                  |
| `makePrimarySends`                            | Total number of makePrimarySends that have completed successfully.                                                                                                  |
| `makePrimarySendsInProgress`                  | Current number of makePrimarySends being executed.                                                                                                                  |
| `makePrimarySendTime`                         | Total amount of time, in nanoseconds, spent doing makePrimarySends.                                                                                                 |
| `pingSendFailures`                            | Total number of pingSends that have failed.                                                                                                                         |
| `pingSends`                                   | Total number of pingSends that have completed successfully.                                                                                                         |
| `pingSendsInProgress`                         | Current number of pingSends being executed.                                                                                                                         |
| `pingSendTime`                                | Total amount of time, in nanoseconds, spent doing pingSends.                                                                                                        |
| `primaryAckSendFailures`                      | Total number of primaryAckSends that have failed.                                                                                                                   |
| `primaryAckSends`                             | Total number of primaryAckSends that have completed successfully.                                                                                                   |
| `primaryAckSendTime`                          | Total amount of time, in nanoseconds, spent doing primaryAckSends.                                                                                                  |
| `primaryAcksInProgress`                       | Current number of primaryAcks being executed.                                                                                                                       |
| `putAllSendFailures`                          | Total number of putAllSends that have failed.                                                                                                                       |
| `putAllSends`                                 | Total number of putAllSends that have completed successfully.                                                                                                       |
| `putAllSendsInProgress`                       | Current number of putAllSends being executed.                                                                                                                       |
| `putAllSendTime`                              | Total amount of time, in nanoseconds, spent doing putAllSends.                                                                                                      |
| `putSendFailures`                             | Total number of putSends that have failed.                                                                                                                          |
| `putSends`                                    | Total number of putSends that have completed successfully.                                                                                                          |
| `putSendsInProgress`                          | Current number of putSends being executed.                                                                                                                          |
| `putSendTime`                                 | Total amount of time, in nanoseconds, spent doing putSends.                                                                                                         |
| `querySendFailures`                           | Total number of querySends that have failed.                                                                                                                        |
| `querySends`                                  | Total number of querySends that have completed successfully.                                                                                                        |
| `querySendsInProgress`                        | Current number of querySends being executed.                                                                                                                        |
| `querySendTime`                               | Total amount of time, in nanoseconds, spent doing querySends.                                                                                                       |
| `readyForEventsSendFailures`                  | Total number of readyForEventsSends that have failed.                                                                                                               |
| `readyForEventsSends`                         | Total number of readyForEventsSends that have completed successfully.                                                                                               |
| `readyForEventsSendsInProgress`               | Current number of readyForEventsSends being executed.                                                                                                               |
| `readyForEventsSendTime`                      | Total amount of time, in nanoseconds, spent doing readyForEventsSends.                                                                                              |
| `registerDataSerializersSendFailures`         | Total number of registerDataSerializers sends that have failed.                                                                                                     |
| `registerDataSerializersSends`                | Total number of registerDataSerializers sends that have completed successfully.                                                                                     |
| `registerDataSerializersSendInProgress`       | Current number of registerDataSerializers sends being executed.                                                                                                     |
| `registerDataSerializersSendTime`             | Total amount of time, in nanoseconds spent doing registerDataSerializers sends.                                                                                     |
| `registerInstantiatorsSendFailures`           | Total number of registerInstantiators sends that have failed                                                                                                        |
| `registerInstantiatorsSends`                  | Total number of registerInstantiators sends that have completed successfully                                                                                        |
| `registerInstantiatorsSendsInProgress`        | Current number of registerInstantiators sends being executed                                                                                                        |
| `registerInstantiatorsSendTime`               | Total amount of time, in nanoseconds, spent doing registerInstantiatorsSends.                                                                                       |
| `registerInterestSendFailures`                | Total number of registerInterestSends that have failed.                                                                                                             |
| `registerInterestSends`                       | Total number of registerInterestSends that have completed successfully.                                                                                             |
| `registerInterestSendsInProgress`             | Current number of registerInterestSends being executed.                                                                                                             |
| `registerInterestSendTime`                    | Total amount of time, in nanoseconds, spent doing registerInterestSends.                                                                                            |
| `removeAllSendFailures`                       | Total number of removeAll sends that have failed.                                                                                                                   |
| `removeAllSends`                              | Total number of removeAll sends that have completed successfully.                                                                                                   |
| `removeAllSendsInProgress`                    | Current number of removeAll sends being executed.                                                                                                                   |
| `removeAllSendTime`                           | Total amount of time, in nanoseconds spent doing removeAll sends.                                                                                                   |
| `rollbackSendFailures`                        | Total number of rollback sends that have failed.                                                                                                                    |
| `rollbackSends`                               | Total number of rollback sends that have completed successfully.                                                                                                    |
| `rollbackSendsInProgress`                     | Current number of rollback sends being executed.                                                                                                                    |
| `rollbackSendTime`                            | Total amount of time, in nanoseconds spent doing rollbacks.                                                                                                         |
| `sizeSendFailures`                            | Total number of size sends that have failed.                                                                                                                        |
| `sizeSends`                                   | Total number of size sends that have completed successfully.                                                                                                        |
| `sizeSendsInProgress`                         | Current number of size sends being executed.                                                                                                                        |
| `sizeSendTime`                                | Total amount of time, in nanoseconds spent doing sizes.                                                                                                             |
| `stopCQSendFailures`                          | Total number of stopCQ sends that have failed.                                                                                                                      |
| `stopCQSends`                                 | Total number of stopCQ sends that have completed successfully.                                                                                                      |
| `stopCQSendsInProgress`                       | Current number of stopCQ sends being executed.                                                                                                                      |
| `stopCQSendTime`                              | Total amount of time, in nanoseconds spent doing stopCQ sends.                                                                                                      |
| `txFailoverSendFailures`                      | Total number of txFailover sends that have failed.                                                                                                                  |
| `txFailoverSends`                             | Total number of txFailover sends that have completed successfully.                                                                                                  |
| `txFailoverSendsInProgress`                   | Current number of txFailover sends being executed.                                                                                                                  |
| `txFailoverSendTime`                          | Total amount of time, in nanoseconds spent doing txFailovers.                                                                                                       |
| `unregisterInterestSendFailures`              | Total number of unregisterInterestSends that have failed.                                                                                                           |
| `unregisterInterestSends`                     | Total number of unregisterInterestSends that have completed successfully.                                                                                           |
| `unregisterInterestSendsInProgress`           | Current number of unregisterInterestSends being executed.                                                                                                           |
| `unregisterInterestSendTime`                  | Total amount of time, in nanoseconds, spent doing unregisterInterestSends.                                                                                          |


## <a id="section_6C247F61DB834C079A16BE92789D4692" class="no-quick-link"></a>Client Connection Pool (PoolStats)

These statistics are in a client and they describe one of the client’s connection pools. The primary statistics are:

| Statistic                   | Description                                                                                                          |
|-----------------------------|----------------------------------------------------------------------------------------------------------------------|
| `connections`               | Current number of connections.                                                                                       |
| `connectionWaits`           | Total number of times a thread completed waiting for a connection (either by timing out or by getting a connection). |
| `connectionWaitsInProgress` | Current number of threads waiting for a connection.                                                                  |
| `connectionWaitTime`        | Total time, in nanoseconds, spent waiting for a connection.                                                          |
| `connects`                  | Total number of times a connection has been created.                                                                 |
| `disconnects`               | Total number of times a connection has been destroyed.                                                               |
| `ENDPOINTS_KNOWN`           | Current number of servers discovered.                                                                                |
| `idleChecks`                | Total number of checks done for idle expiration.                                                                     |
| `idleDisconnects`           | Total number of disconnects done due to idle expiration.                                                             |
| `INITIAL_CONTACTS`          | Number of contacts initially made the user.                                                                          |
| `KNOWN_LOCATORS`            | Current number of locators discovered.                                                                               |
| `lifetimeChecks`            | Total number of checks done for lifetime expiration.                                                                 |
| `lifetimeConnects`          | Total number of connects done due to lifetime expiration.                                                            |
| `lifetimeDisconnects`       | Total number of disconnects done due to lifetime expiration.                                                         |
| `lifetimeExtensions`        | Total number of times a connection's lifetime has been extended because the servers are still balanced.              |
| `minPoolSizeConnects`       | Total number of connects done to maintain minimum pool size.                                                         |
| `QUEUE_SERVERS`             | Number of servers hosting this client.s subscription queue.                                                          |
| `REQUESTS_TO_LOCATOR`       | Number of requests from this connection pool to a locator.                                                           |
| `RESPONSES_FROM_LOCATOR`    | Number of responses from the locator to this connection pool.                                                        |

## <a id="section_66C0E7748501480B85209D57D24256D5" class="no-quick-link"></a>Continuous Querying (CqQueryStats)

These statistics are for continuous querying information. The statistics are:

| Statistic                        | Description                                                                                                            |
|----------------------------------|------------------------------------------------------------------------------------------------------------------------|
| `CQS_CREATED`                    | Number of CQ operations created.                                                                                       |
| `CQS_ACTIVE`                     | Number of CQ operations actively executing.                                                                            |
| `CQS_STOPPED`                    | Number of CQ operations stopped.                                                                                       |
| `CQS_CLOSED`                     | Number of CQ operations closed.                                                                                        |
| `CQS_ON_CLIENT`                  | Number of CQ operations on the client.                                                                                 |
| `CLIENTS_WITH_CQS`               | Number of Clients with CQ operations.                                                                                  |
| `CQ_QUERY_EXECUTION_TIME`        | Time taken, in nanoseconds, for CQ query execution.                                                                    |
| `CQ_QUERY_EXECUTIONS_COMPLETED`  | Number of CQ query executions operations.                                                                              |
| `CQ_QUERY_EXECUTION_IN_PROGRESS` | CQ Query execution operations in progress.                                                                             |
| `UNIQUE_CQ_QUERY`                | Number of unique CQ queries.                                                                                           |
| `closeCQFailures`                | Total number of closeCQ attempts that have failed. For client-to-server messaging performance.                         |
| `closeCQs`                       | Total number of closeCQs that have completed successfully. For client-to-server messaging performance.                 |
| `closeCQSendFailures`            | Total number of closeCQSends that have failed. For client-to-server messaging performance.                             |
| `closeCQSends`                   | Total number of closeCQSends that have completed successfully. For client-to-server messaging performance.             |
| `closeCQSendsInProgress`         | Current number of closeCQSends being executed. For client-to-server messaging performance.                             |
| `closeCQSendTime`                | Total amount of time, in nanoseconds, spent doing closeCQSends. For client-to-server messaging performance.            |
| `closeCQsInProgress`             | Current number of closeCQs being executed. For client-to-server messaging performance.                                 |
| `closeCQTime`                    | Total amount of time, in nanoseconds, spent doing closeCQs. For client-to-server messaging performance.                |
| `closeCQTimeouts`                | Total number of closeCQ attempts that have timed out. For client-to-server messaging performance.                      |
| `createCQFailures`               | Total number of createCQ attempts that have failed. For client-to-server messaging performance.                        |
| `createCQs`                      | Total number of createCQs that have completed successfully. For client-to-server messaging performance.                |
| `createCQSendFailures`           | Total number of createCQSends that have failed. For client-to-server messaging performance.                            |
| `createCQSends`                  | Total number of createCQSends that have completed successfully. For client-to-server messaging performance.            |
| `createCQSendsInProgress`        | Current number of createCQSends being executed. For client-to-server messaging performance.                            |
| `createCQSendTime`               | Total amount of time, in nanoseconds, spent doing createCQSends. For client-to-server messaging performance.           |
| `createCQsInProgress`            | Current number of createCQs being executed. For client-to-server messaging performance.                                |
| `createCQTime`                   | Total amount of time, in nanoseconds, spent doing createCQs. For client-to-server messaging performance.               |
| `createCQTimeouts`               | Total number of createCQ attempts that have timed out. For client-to-server messaging performance.                     |
| `stopCQFailures`                 | Total number of stopCQ attempts that have failed. For client-to-server messaging performance.                          |
| `stopCQs`                        | Total number of stopCQs that have completed successfully. For client-to-server messaging performance.                  |
| `stopCQSendFailures`             | Total number of stopCQSends that have failed. For client-to-server messaging performance.                              |
| `stopCQSends`                    | Total number of stopCQSends that have completed successfully. For client-to-server messaging performance.              |
| `stopCQSendsInProgress`          | Current number of stopCQSends being executed. For client-to-server messaging performance.                              |
| `stopCQSendTime`                 | Total amount of time, in nanoseconds, spent doing stopCQSends. For client-to-server messaging performance.             |
| `stopCQsInProgress`              | Current number of stopCQs being executed. For client-to-server messaging performance.                                  |
| `stopCQTime`                     | Total amount of time, in nanoseconds, spent doing stopCQs. For client-to-server messaging performance.                 |
| `stopCQTimeouts`                 | Total number of stopCQ attempts that have timed out. For client-to-server messaging performance.                       |
| `cqCount`                        | Number of CQs operations on the client. For server notification to a single client.                                    |
| `cqProcessingTime`               | Total time, in nanoseconds, spent by the cache client notifier processing CQs. For server notification to all clients. |

## <a id="section_D4ABED3FF94245C0BEE0F6FC9481E867" class="no-quick-link"></a>Delta Propagation (DeltaPropagationStatistics)

These statistics are for delta propagation between members. The primary statistics are:

| Statistic                                      | Description                                                                                                                                                                 |
|------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `deltaFullValuePuts`                           | Total number of full value puts processed successfully in response to failed delta puts.                                                                                    |
| `deltaFullValueRequests`                       | Number of full value requests received from a client after failing to apply delta and processed successfully by this server.                                                |
| `deltaMessageFailures`                         | The number of distribution messages containing delta that could not be processed at receiving side.                                                                         |
| `deltaMessageFailures`                         | Current number of delta messages received but could not be processed after reception.                                                                                       |
| `deltaPutFailures`                             | Number of failures encountered while processing delta received from a client on this server.                                                                                |
| `deltaPuts`                                    | Total number of puts containing delta.                                                                                                                                      |
| `deltaPutsTime`                                | Total amount of time, in nanoseconds, spent constructing delta part of puts.                                                                                                |
| `fullDeltaMessages`                            | Current number of full value delta messages received off network and processed after reception.                                                                             |
| `fullDeltaRequests`                            | Number of full value requests made by this server to the sender client after failing to apply delta.                                                                        |
| `fullValueDeltaMessagesRequested`              | The number of distribution messages containing full value requested by this <%=vars.product_name%> system after failing to apply received delta.                |
| `fullValueDeltaMessagesSent`                   | The number of distribution messages sent in response to full value requests by a remote <%=vars.product_name%> System as a result of failure in applying delta. |
| `partitionMessagesWithDeltaFailures`           | Number of failures while processing PartitionMessages containing delta.                                                                                                     |
| `partitionMessagesWithDeltaProcessed`          | Number of PartitionMessages containing delta processed.                                                                                                                     |
| `partitionMessagesWithDeltaProcessedTime`      | Total time spent applying deltas.                                                                                                                                           |
| `partitionMessagesWithDeltaSent`               | Number of PartitionMessages containing delta sent.                                                                                                                          |
| `partitionMessagesWithDeltaSentTime`           | Total time spent extractng deltas.                                                                                                                                          |
| `partitionMessagesWithFullValueDeltaRequested` | Number of requests for PartitionMessages containing full delta value as a result of failure in applying delta.                                                              |
| `partitionMessagesWithFullValueDeltaSent`      | Number of PartitionMessages containing full delta value sent.                                                                                                               |
| `preparedDeltaMessages`                        | The number of distribution messages containing delta that this <%=vars.product_name%> system has prepared for distribution.                                     |
| `preparedDeltaMessages`                        | Number of client messages being prepared for dispatch, which have delta part in them.                                                                                       |
| `preparedDeltaMessagesTime`                    | The total amount of time this distribution manager has spent preparing delta parts of messages.                                                                             |
| `processedDeltaMessages`                       | The number of distribution messages containing delta that this <%=vars.product_name%> system has processed.                                                     |
| `processedDeltaMessages`                       | Current number of delta messages received off network and processed after reception.                                                                                        |
| `processedDeltaMessagesTime`                   | The amount of time this distribution manager has spent in applying delta on its existing value.                                                                             |
| `processedDeltaMessagesTime`                   | Total time spent applying received delta parts on existing messages at clients.                                                                                             |
| `processedDeltaPuts`                           | Number of cache client put requests containing delta received from a client and processed successfuly.                                                                      |
| `processedDeltaPutsTime`                       | Total time spent in applying delta received from a client on existing value in this server's region.                                                                        |

## <a id="section_6C2BECC63A83456190B029DEDB8F4BE3" class="no-quick-link"></a>Disk Space Usage (DiskDirStatistics)

These statistics pertain to the disk usage for a region’s disk directory. The primary statistics are:

| Statistic               | Description                                                                                                                                                |
|-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `diskSpace`             | The total number of bytes currently being used on disk in this directory for oplog files.                                                                  |
| `maximumSpace`          | The configured maximum number of bytes allowed in this directory for oplog files. Note that some product configurations allow this maximum to be exceeded. |
| `volumeFreeSpace`       | The total free space in bytes on the disk volume.                                                                                                          |
| `volumeFreeSpaceChecks` | The total number of disk space checks.                                                                                                                     |
| `volumeFreeSpaceTime`   | The total time, in nanseconds, spent checking disk usage.                                                                                                  |
| `volumeSize`            | The total size in bytes of the disk volume.                                                                                                                |

## <a id="section_3456190B026C2BECC63A89DEDB8F4BE3" class="no-quick-link"></a>Disk Store Statistics (DiskStoreStatistics)

Statistics about a Region's use of the disk. The primary statistics are:

| Statistic                        | Description                                                                                                                                                            |
|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `backupsCompleted`               | The number of backups of this disk store that have been taking while this VM was alive.                                                                                |
| `backupsInProgress`              | The current number of backups in progress on this disk store.                                                                                                          |
| `compactableOplogs`              | Current number of oplogs ready to be compacted.                                                                                                                        |
| `compactDeletes`                 | Total number of times an oplog compact did a delete.                                                                                                                   |
| `compactDeleteTime`              | Total amount of time, in nanoseconds, spent doing deletes during a compact.                                                                                            |
| `compactInserts`                 | Total number of times an oplog compact did a db insert.                                                                                                                |
| `compactInsertTime`              | Total amount of time, in nanoseconds, spent doing inserts during a compact.                                                                                            |
| `compacts`                       | Total number of completed oplog compacts.                                                                                                                              |
| `compactsInProgress`             | Current number of oplog compacts that are in progress.                                                                                                                 |
| `compactTime`                    | Total amount of time, in nanoseconds, spent compacting oplogs.                                                                                                         |
| `compactUpdates`                 | Total number of times an oplog compact did an update.                                                                                                                  |
| `compactUpdateTime`              | Total amount of time, in nanoseconds, spent doing updates during a compact.                                                                                            |
| `flushedBytes`                   | The total number of bytes written to disk by async queue flushes.                                                                                                      |
| `flushes`                        | The total number of times the an entry has been flushed from the async queue.                                                                                          |
| `flushesInProgress`              | Current number of oplog flushes that are in progress.                                                                                                                  |
| `flushTime`                      | The total amount of time spent doing an async queue flush.                                                                                                             |
| `inactiveOplogs`                 | Current number of oplogs that are no longer being written but are not ready ready to compact.                                                                          |
| `openOplogs`                     | Current number of oplogs this disk store has open.                                                                                                                     |
| `oplogReads`                     | Total number of oplog reads.                                                                                                                                           |
| `oplogRecoveries`                | The total number of oplogs recovered.                                                                                                                                  |
| `oplogRecoveryTime`              | The total amount of time spent doing an oplog recovery.                                                                                                                |
| `oplogRecoveredBytes`            | The total number of bytes that have been read from oplogs during a recovery.                                                                                           |
| `oplogSeeks`                     | Total number of oplog seeks.                                                                                                                                           |
| `queueSize`                      | The current number of entries in the async queue waiting to be flushed to disk.                                                                                        |
| `readBytes`                      | The total number of bytes that have been read from disk.                                                                                                               |
| `reads`                          | The total number of region entries that have been read from disk.                                                                                                      |
| `readTime`                       | The total amount of time spent reading from disk.                                                                                                                      |
| `recoveriesInProgress`           | Current number of persistent regions being recovered from disk.                                                                                                        |
| `recoveredBytes`                 | The total number of bytes that have been read from disk during a recovery.                                                                                             |
| `recoveredEntryCreates`          | The total number of entry create records processed while recovering oplog data.                                                                                        |
| `recoveredEntryDestroys`         | The total number of entry destroy records processed while recovering oplog data.                                                                                       |
| `recoveredEntryUpdates`          | The total number of entry update records processed while recovering oplog data.                                                                                        |
| `recoveredValuesSkippedDueToLRU` | The total number of entry values that did not need to be recovered due to the LRU.                                                                                     |
| `recoveryRecordsSkipped`         | The total number of oplog records skipped during recovery.                                                                                                             |
| `recoveryTime`                   | The total amount of time spent doing a recovery.                                                                                                                       |
| `removes`                        | The total number of region entries that have been removed from disk.                                                                                                   |
| `removeTime`                     | The total amount of time spent removing from disk.                                                                                                                     |
| `uncreatedRecoveredRegions`      | The current number of regions that have been recovered but have not yet been created.                                                                                  |
| `writes`                         | The total number of region entries that have been written to disk. A write is done every time an entry is created on disk or every time its value is modified on disk. |
| `writesInProgress`               | Current number of oplog writes that are in progress.                                                                                                                   |
| `writeTime`                      | The total amount of time spent writing to disk.                                                                                                                        |
| `writtenBytes`                   | The total number of bytes that have been written to disk.                                                                                                              |

## <a id="section_983BFC6D53C74829A04A91C39E06315F" class="no-quick-link"></a>Disk Usage and Performance (DiskRegionStatistics)

Statistics regarding operations performed on a disk region for persistence/overflow. The primary statistics are:

| Statistic        | Description                                                                                                                                                                            |
|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `bufferSize`     | Current number of bytes buffered to be written to the disk.                                                                                                                            |
| `bytesOnlyOnDisk`  | The current number of bytes on disk and not in memory. It includes overflowed entries and recovered entries that have not yet been faulted in. |
| `commits`        | Total number of commits.                                                                                                                                                               |
| `commitTime`     | Total amount of time, in nanoseconds, spent doing commits.                                                                                                                             |
| `entriesInVM`    | Current number of entries whose value resides in the member. The value may also have been written to the disk.                                                                         |
| `entriesOnlyOnDisk`  | Current number of entries whose value is on the disk and is not in memory. This is true of overflowed entries. It is also true of recovered entries that have not yet been faulted in. |
| `flushedBytes`   | Total number of bytes flushed out of the async write buffer to the disk.                                                                                                               |
| `flushes`        | Total number of times the async write buffer has been flushed.                                                                                                                         |
| `flushTime`      | Total amount of time, in nanoseconds, spent doing a buffer flush.                                                                                                                      |
| `readBytes`      | Total number of bytes that have been read from the disk.                                                                                                                               |
| `reads`          | Total number of region entries that have been read from the disk.                                                                                                                      |
| `readTime`       | Total amount of time, in nanoseconds, spent reading from the disk.                                                                                                                     |
| `recoveredBytes` | Total number of bytes that have been read from disk during a recovery.                                                                                                                 |
| `recoveryTime`   | Total amount of time, in nanoseconds, spent doing a recovery.                                                                                                                          |
| `removes`        | Total number of region entries that have been removed from the disk.                                                                                                                   |
| `removeTime`     | Total amount of time, in nanoseconds, spent removing from the disk.                                                                                                                    |
| `writes`         | Total number of region entries that have been written to disk. A write is done every time an entry is created on disk or every time its value is modified on the disk.                 |
| `writeTime`      | Total amount of time, in nanoseconds, spent writing to the disk.                                                                                                                       |
| `writtenBytes`   | Total number of bytes that have been written to the disk.                                                                                                                              |

## <a id="section_ACB4161F10D64BC0B15871D003FF6FDF" class="no-quick-link"></a>Distributed System Messaging (DistributionStats)

Statistics on the <%=vars.product_name%> distribution layer. These statistics can be used to tell how much message traffic exists between this member and other cluster members.

The primary statistics are:

| Statistic                              | Description                                                                                                                                                                                                                                     |
|----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `asyncConflatedMsgsDesc`               | The total number of queued conflated messages used for asynchronous queues.                                                                                                                                                                     |
| `asyncDequeuedMsgsDesc`                | The total number of queued messages that have been removed from the queue and successfully sent.                                                                                                                                                |
| `asyncDistributionTimeoutExceededDesc` | Total number of times the async-distribution-timeout has been exceeded during a socket write.                                                                                                                                                   |
| `asyncQueueAddTime`                    | Total amount of time, in nanoseconds, spent in adding messages to async queue.                                                                                                                                                                  |
| `asyncQueuedMsgsDesc`                  | The total number of queued messages used for asynchronous queues.                                                                                                                                                                               |
| `asyncQueueFlushesCompletedDesc`       | Total number of asynchronous queue flushes completed.                                                                                                                                                                                           |
| `asyncQueueFlushesInProgressDesc`      | Current number of asynchronous queues being flushed.                                                                                                                                                                                            |
| `asyncQueueFlushTimeDesc`              | Total time spent flushing asynchronous queues.                                                                                                                                                                                                  |
| `asyncQueueRemoveTime`                 | Total amount of time, in nanoseconds, spent in removing messages from async queue.                                                                                                                                                              |
| `asyncQueuesDesc`                      | Current number of queues for asynchronous messaging.                                                                                                                                                                                            |
| `asyncQueueSizeDesc`                   | Current size in bytes used for asynchronous queues.                                                                                                                                                                                             |
| `asyncQueueSizeExceededDesc`           | Total number of asynchronous queues that have exceeded the maximum size.                                                                                                                                                                        |
| `asyncQueueTimeoutExceededDesc`        | Total number of asynchronous queues that have timed out by being blocked for more than async-queue-timeout milliseconds.                                                                                                                        |
| `asyncSocketWriteBytes`                | Total number of bytes sent out on non-blocking sockets.                                                                                                                                                                                         |
| `asyncSocketWriteRetries`              | Total number of retries needed to write a single block of data using non-blocking socket write calls.                                                                                                                                           |
| `asyncSocketWrites`                    | Total number of non-blocking socket write calls completed.                                                                                                                                                                                      |
| `asyncSocketWritesInProgress`          | Current number of non-blocking socket write calls in progress.                                                                                                                                                                                  |
| `asyncSocketWriteTime`                 | Total amount of time, in nanoseconds, spent in non-blocking socket write calls.                                                                                                                                                                 |
| `asyncThreadCompletedDesc`             | Total number of iterations of work performed by asynchronous message queue threads.                                                                                                                                                             |
| `asyncThreadInProgressDesc`            | Current iterations of work performed by asynchronous message queue threads.                                                                                                                                                                     |
| `asyncThreadsDesc`                     | Total number of asynchronous message queue threads.                                                                                                                                                                                             |
| `asyncThreadTimeDesc`                  | Total time spent by asynchronous message queue threads performing iterations.                                                                                                                                                                   |
| `batchSendTime`                        | Total amount of time, in nanoseconds, spent queueing and flushing message batches.                                                                                                                                                              |
| `batchWaitTime`                        | Reserved for future use                                                                                                                                                                                                                         |
| `broadcastMessagesDesc`                | The number of distribution messages that the <%=vars.product_name%> system has broadcast. A broadcast message is one sent to every other manager in the group.                                                                      |
| `broadcastMessagesTimeDesc`            | The total amount of time this distribution manager has spent broadcasting messages. A broadcast message is one sent to every other manager in the group.                                                                                        |
| `bufferAcquires`                       | Total number of times a buffer has been acquired.                                                                                                                                                                                               |
| `bufferAcquiresInProgress`             | Current number of threads waiting to acquire a buffer.                                                                                                                                                                                          |
| `bufferAcquireTime`                    | Total amount of time, in nanoseconds, spent acquiring a socket.                                                                                                                                                                                 |
| `commitWaitsDesc`                      | The number of transaction commits that had to wait for a response before they could complete.                                                                                                                                                   |
| `deserializations`                     | Total number of object deserialization calls.                                                                                                                                                                                                   |
| `deserializationTime`                  | Total amount of time, in nanoseconds, spent deserializing objects.                                                                                                                                                                              |
| `deserializedBytes`                    | Total number of bytes consumed by object deserialization.                                                                                                                                                                                       |
| `failedAcceptsDesc`                    | Total number of times an accept (receiver creation) of a connect from some other member has failed.                                                                                                                                             |
| `failedConnectsDesc`                   | Total number of times a connect (sender creation) to some other member has failed.                                                                                                                                                              |
| `final`                                | String distributeMessageTimeDesc = The amount of time it takes to prepare a message and send it on the network. This includes sentMessagesTime.                                                                                                 |
| `finalCheckRequestsReceived`           | The number of final check requests that this member has received.                                                                                                                                                                               |
| `finalCheckRequestsSent`               | The number of final check requests that this member has sent.                                                                                                                                                                                   |
| `finalCheckResponsesReceived`          | The number of final check responses that this member has received.                                                                                                                                                                                   |
| `finalCheckResponsesSent`               | The number of final check responses that this member has sent.                                                                                                                                                                                   |
| `heartbeatRequestsSent`            | The number of heartbeat request messages that this member has sent.                                                                                                                                                                                 |
| `heartbeatRequestsReceived`        | The number of heartbeat request messages that this member has received.                                                                                                                                                                             |
| `heartbeatsReceived`               | The number of heartbeat messages that this member has received.                                                                                                                                                                                     |
| `heartbeatsSent`                    | The number of heartbeat messages that this member has sent.                                                                                                                                                                                 |
| `highPriorityQueueSizeDesc`            | The number of high priority distribution messages currently waiting to be processed.                                                                                                                                                            |
| `highPriorityQueueThrottleCounDesc`    | The total number of times a thread was delayed in adding a normal message to the high priority queue.                                                                                                                                           |
| `highPriorityQueueThrottleTimeDesc`    | The total amount of time, in nanoseconds, spent delayed by the high priority queue throttle.                                                                                                                                                    |
| `highPriorityThreadJobsDesc`           | The number of messages currently being processed by high priority processor threads.                                                                                                                                                            |
| `highPriorityThreadsDesc`              | The number of threads currently processing high priority messages.                                                                                                                                                                              |
| `highPriorityThreadStarts`             | Total number of times a thread has been created for the pool handling high priority messages.                                                                                                                                                   |
| `jgDirAckdownTime`                     | Time, in nanoseconds, spent in JGroups DirAck processing down events.                                                                                                                                                                           |
| `jgDirAcksReceived`                    | Number of DirAck acks received.                                                                                                                                                                                                                 |
| `jgDirAckupTime`                       | Time, in nanoseconds, spent in JGroups DirAck processing up events.                                                                                                                                                                             |
| `jgDISCOVERYdownTime`                  | Time, in nanoseconds, spent in JGroups DISCOVERY processing down events.                                                                                                                                                                        |
| `jgDISCOVERYupTime`                    | Time, in nanoseconds, spent in JGroups DISCOVERY processing up events.                                                                                                                                                                          |
| `jgFCdownTime`                         | Time, in nanoseconds, spent in JGroups FC processing down events.                                                                                                                                                                               |
| `jgFCupTime`                           | Time, in nanoseconds, spent in JGroups FC processing up events.                                                                                                                                                                                 |
| `jgFDdownTime`                         | Time, in nanoseconds, spent in JGroups FD processing down events.                                                                                                                                                                               |
| `jgFDupTime`                           | Time, in nanoseconds, spent in JGroups FD processing up events.                                                                                                                                                                                 |
| `jgFRAG2downTime`                      | Time, in nanoseconds, spent in JGroups FRAG2 processing down events.                                                                                                                                                                            |
| `jgFRAG2upTime`                        | Time, in nanoseconds, spent in JGroups FRAG2 processing up events.                                                                                                                                                                              |
| `jgFragmentationsPerformed`            | Number of message fragmentation operations performed.                                                                                                                                                                                           |
| `jgFragmentsCreated`                   | Number of message fragments created.                                                                                                                                                                                                            |
| `jgGMSdownTime`                        | Time, in nanoseconds, spent in JGroups GMS processing down events.                                                                                                                                                                              |
| `jgGMSupTime`                          | Time, in nanoseconds, spent in JGroups GMS processing up events.                                                                                                                                                                                |
| `jgNAKACKdownTime`                     | Time, in nanoseconds, spent in JGroups NAKACK processing down events.                                                                                                                                                                           |
| `jgNAKACKupTime`                       | Time, in nanoseconds, spent in JGroups NAKACK processing up events.                                                                                                                                                                             |
| `jgSTABLEdownTime`                     | Time, in nanoseconds, spent in JGroups STABLE processing down events.                                                                                                                                                                           |
| `jgSTABLEupTime`                       | Time, in nanoseconds, spent in JGroups STABLE processing up events.                                                                                                                                                                             |
| `jgTCPGOSSIPdownTime`                  | Time, in nanoseconds, spent in JGroups TCPGOSSIP processing down events.                                                                                                                                                                        |
| `jgTCPGOSSIPupTime`                    | Time, in nanoseconds, spent in JGroups TCPGOSSIP processing up events.                                                                                                                                                                          |
| `jgUDPdownTime`                        | Time, in nanoseconds, spent in JGroups UDP processing down events.                                                                                                                                                                              |
| `jgUDPupTime`                          | Time, in nanosecnds, spent in JGroups UDP processing up events.                                                                                                                                                                                 |
| `jgUNICASTdownTime`                    | Time, in nanoseconds, spent in JGroups UNICAST processing down events.                                                                                                                                                                          |
| `jgUNICASTupTime`                      | Time, in nanoseconds, spent in JGroups UNICAST processing up events.                                                                                                                                                                            |
| `jgVIEWSYNCdownTime`                   | Time, in nanoseconds, spent in JGroups VIEWSYNC processing down events.                                                                                                                                                                         |
| `jgVIEWSYNCupTime`                     | Time, in nanoseconds, spent in JGroups VIEWSYNC processing up events.                                                                                                                                                                           |
| `lostConnectionLeaseDesc`              | Total number of times an unshared sender socket has remained idle long enough that its lease expired.                                                                                                                                           |
| `mcastReadBytes`                       | Total number of bytes received in multicast datagrams.                                                                                                                                                                                          |
| `mcastReads`                           | Total number of multicast datagrams received.                                                                                                                                                                                                   |
| `mcastRetransmitRequests`              | Total number of multicast datagram socket retransmission requests sent to other processes.                                                                                                                                                      |
| `mcastRetransmits`                     | Total number of multicast datagram socket retransmissions.                                                                                                                                                                                      |
| `mcastWriteBytes`                      | Total number of bytes sent out on multicast datagram sockets.                                                                                                                                                                                   |
| `mcastWrites`                          | Total number of multicast datagram socket write calls.                                                                                                                                                                                          |
| `mcastWriteTime`                       | Total amount of time, in nanoseconds, spent in multicast datagram socket write calls.                                                                                                                                                           |
| `messageBytesBeingReceived`            | Current number of bytes consumed by messages being received or processed.                                                                                                                                                                       |
| `messageChannelTimeDesc`               | The total amount of time received messages spent in the distribution channel.                                                                                                                                                                   |
| `messageProcessingScheduleTimeDesc`    | The amount of time this distribution manager has spent dispatching a message to processor threads.                                                                                                                                              |
| `messagesBeingReceived`                | Current number of messages being received off the network or being processed after reception.                                                                                                                                                   |
| `msgDeserializationTime`               | Total amount of time, in nanoseconds, spent deserializing messages.                                                                                                                                                                             |
| `msgSerializationTime`                 | Total amount of time, in nanoseconds, spent serializing messages.                                                                                                                                                                               |
| `nodesDesc`                            | The current number of members in this cluster.                                                                                                                                                                                       |
| `overflowQueueSizeDesc`                | The number of normal distribution messages currently waiting to be processed.                                                                                                                                                                   |
| `overflowQueueThrottleCountDesc`       | The total number of times a thread was delayed in adding a normal message to the overflow queue.                                                                                                                                                |
| `overflowQueueThrottleTimeDesc`        | The total amount of time, in nanoseconds, spent delayed by the overflow queue throttle.                                                                                                                                                         |
| `partitionedRegionThreadJobsDesc`      | The number of messages currently being processed by partitioned region threads.                                                                                                                                                                 |
| `partitionedRegionThreadsDesc`         | The number of threads currently processing partitioned region messages.                                                                                                                                                                         |
| `partitionedRegionThreadStarts`        | Total number of times a thread has been created for the pool handling partitioned region messages.                                                                                                                                              |
| `pdxDeserializations`                  | Total number of PDX deserializations.                                                                                                                                                                                                           |
| `pdxDeserializedBytes`                 | Total number of bytes read by PDX deserialization.                                                                                                                                                                                              |
| `pdxInstanceCreations`                 | Total number of times a PdxInstance has been created by deserialization.                                                                                                                                                                        |
| `pdxInstanceDeserializations`          | Total number of times getObject has been called on a PdxInstance.                                                                                                                                                                               |
| `pdxInstanceDeserializationTime`       | Total amount of time, in nanoseconds, spent deserializing PdxInstances by calling getObject.                                                                                                                                                    |
| `pdxSerializations`                    | Total number of PDX serializations.                                                                                                                                                                                                             |
| `pdxSerializedBytes`                   | Total number of bytes produced by PDX serialization.                                                                                                                                                                                            |
| `processedMessagesDesc`                | The number of distribution messages that the <%=vars.product_name%> system has processed.                                                                                                                                           |
| `processedMessagesTimeDesc`            | The amount of time this distribution manager has spent in message.process().                                                                                                                                                                    |
| `processingThreadJobsDesc`             | The number of messages currently being processed by pooled message processor threads.                                                                                                                                                           |
| `processingThreadsDesc`                | The number of threads currently processing normal messages.                                                                                                                                                                                     |
| `processingThreadStarts`               | Total number of times a thread has been created for the pool processing normal messages.                                                                                                                                                        |
| `receivedBytesDesc`                    | The number of distribution message bytes that the <%=vars.product_name%> system has received.                                                                                                                                       |
| `receivedMessagesDesc`                 | The number of distribution messages that the <%=vars.product_name%> system has received.                                                                                                                                            |
| `receiverConnectionsDesc`              | Current number of sockets dedicated to receiving messages.                                                                                                                                                                                      |
| `receiverDirectBufferSizeDesc`         | Current number of bytes allocated from direct memory as buffers for incoming messages.                                                                                                                                                          |
| `receiverHeapBufferSizeDesc`           | Current number of bytes allocated from Java heap memory as buffers for incoming messages.S                                                                                                                                                      |
| `reconnectAttemptsDesc`                | Total number of times an established connection was lost and a reconnect was attempted.                                                                                                                                                         |
| `replyHandoffTimeDesc`                 | Total number of seconds to switch thread contexts from processing thread to application thread.                                                                                                                                                 |
| `replyMessageTimeDesc`                 | The amount of time spent processing reply messages;                                                                                                                                                                                             |
| `replyTimeoutsDesc`                    | Total number of message replies that have timed out.                                                                                                                                                                                            |
| `replyWaitMaxTimeDesc`                 | Maximum time spent transmitting and then waiting for a reply to a message. See sentMessagesMaxTime for related information.                                                                                                                     |
| `replyWaitsCompletedDesc`              | Total number of times waits for a reply have completed.                                                                                                                                                                                         |
| `replyWaitsInProgressDesc`             | Current number of threads waiting for a reply.                                                                                                                                                                                                  |
| `replyWaitTimeDesc`                    | Total time spent waiting for a reply to a message.                                                                                                                                                                                              |
| `senderDirectBufferSizeDesc`           | Current number of bytes allocated from direct memory as buffers for outgoing messages.                                                                                                                                                          |
| `senderHeapBufferSizeDesc`             | Current number of bytes allocated from Java heap memory as buffers for outgoing messages.                                                                                                                                                       |
| `sentBytesDesc`                        | The number of distribution message bytes that the <%=vars.product_name%> system has sent.                                                                                                                                           |
| `sentCommitMessagesDesc`               | The number of transaction commit messages that the <%=vars.product_name%> system has created to be sent. Note, it is possible for a commit to only create one message even though it will end up being sent to multiple recipients. |
| `sentMessagesDesc`                     | The number of distribution messages that the <%=vars.product_name%> system has sent, which includes broadcastMessages.                                                                                                              |
| `sentMessagesMaxTimeDesc`              | The highest amount of time this distribution manager has spent distributing a single message to the network.                                                                                                                                    |
| `sentMessagesTimeDesc`                 | The total amount of time this distribution manager has spent sending messages, which includes broadcastMessagesTime.                                                                                                                            |
| `serializations`                       | Total number of object serialization calls.                                                                                                                                                                                                     |
| `serializationTime`                    | Total amount of time, in nanoseconds, spent serializing objects.                                                                                                                                                                                |
| `serializedBytes`                      | Total number of bytes produced by object serialization.                                                                                                                                                                                         |
| `serialPooledThreadDesc`               | The number of threads created in the SerialQueuedExecutorPool.                                                                                                                                                                                  |
| `serialPooledThreadJobsDesc`           | The number of messages currently being processed by pooled serial processor threads.                                                                                                                                                            |
| `serialPooledThreadStarts`             | Total number of times a thread has been created for the serial pool(s).                                                                                                                                                                         |
| `serialQueueBytesDesc`                 | The approximate number of bytes consumed by serial distribution messages currently waiting to be processed.                                                                                                                                     |
| `serialQueueSizeDesc`                  | The number of serial distribution messages currently waiting to be processed.                                                                                                                                                                   |
| `serialQueueThrottleCountDesc`         | The total number of times a thread was delayed in adding a ordered message to the serial queue.                                                                                                                                                 |
| `serialQueueThrottleTimeDesc`          | The total amount of time, in nanoseconds, spent delayed by the serial queue throttle.                                                                                                                                                           |
| `serialThreadJobsDesc`                 | The number of messages currently being processed by serial threads.                                                                                                                                                                             |
| `serialThreadsDesc`                    | The number of threads currently processing serial/ordered messages.                                                                                                                                                                             |
| `serialThreadStarts`                   | Total number of times a thread has been created for the serial message executor.                                                                                                                                                                |
| `sharedOrderedSenderConnectionsDesc`   | Current number of shared sockets dedicated to sending ordered messages.                                                                                                                                                                         |
| `sharedUnorderedSenderConnectionsDesc` | Current number of shared sockets dedicated to sending unordered messages.                                                                                                                                                                       |
| `socketLocks`                          | Total number of times a socket has been locked.                                                                                                                                                                                                 |
| `socketLockTime`                       | Total amount of time, in nanoseconds, spent locking a socket.                                                                                                                                                                                   |
| `suspectsReceived`                     | The number of suspect messages that this member has received.                                                                                                                                                                                   |
| `suspectsSent`                         | The number of suspect messages that this member has sent.                                                                                                                                                                                       |
| `syncSocketWriteBytes`                 | Total number of bytes sent out in synchronous/blocking mode on sockets.                                                                                                                                                                         |
| `syncSocketWrites`                     | Total number of completed synchronous/blocking socket write calls.                                                                                                                                                                              |
| `syncSocketWritesInProgress`           | Current number of synchronous/blocking socket write calls in progress.                                                                                                                                                                          |
| `syncSocketWriteTime`                  | Total amount of time, in nanoseconds, spent in synchronous/blocking socket write calls.                                                                                                                                                         |
| `tcpFinalCheckRequestsReceived`           | The number of TCP final check requests that this member has received.                                                                                                                                                                               |
| `tcpFinalCheckRequestsSent`               | The number of TCP final check requests that this member has sent.                                                                                                                                                                                   |
| `tcpFinalCheckResponsesReceived`          | The number of TCP final check responses that this member has received.                                                                                                                                                                                   |
| `tcpFinalCheckResponsesSent`               | The number of TCP final check responses that this member has sent.                                                                                                                                                                                   |
| `threadOrderedSenderConnectionsDesc`   | Current number of thread sockets dedicated to sending ordered messages.                                                                                                                                                                         |
| `threadUnorderedSenderConnectionsDesc` | Current number of thread sockets dedicated to sending unordered messages.                                                                                                                                                                       |
| `TOSentMsgs`                           | Total number of messages sent on thread owned senders.                                                                                                                                                                                          |
| `ucastReadBytes`                       | Total number of bytes received in unicast datagrams.                                                                                                                                                                                            |
| `ucastReads`                           | Total number of unicast datagrams received.                                                                                                                                                                                                     |
| `ucastRetransmits`                     | Total number of unicast datagram socket retransmissions.                                                                                                                                                                                        |
| `ucastWriteBytes`                      | Total number of bytes sent out on unicast datagram sockets.                                                                                                                                                                                     |
| `ucastWrites`                          | Total number of unicast datagram socket write calls.                                                                                                                                                                                            |
| `ucastWriteTime`                       | Total amount of time, in nanoseconds, spent in unicast datagram socket write calls.                                                                                                                                                             |
| `udpDispatchRequestTime`               | The total amount of time, in nanoseconds, spent deserializing and dispatching UDP messages in the message-reader thread.                                                                                                                        |
| `udpFinalCheckRequestsReceived`           | The number of UDP final check requests that this member has received.                                                                                                                                                                               |
| `udpFinalCheckRequestsSent`               | The number of UDP final check requests that this member has sent.                                                                                                                                                                                   |
| `udpFinalCheckResponsesReceived`          | The number of UDP final check responses that this member has received.                                                                                                                                                                              |
| `udpFinalCheckResponsesSent`               | The number of UDP final check responses that this member has sent.                                                                                                                                                                                 |
| `udpMsgDecryptionTime`                     | The total amount of time, in nanoseconds, spent decrypting UDP messages.                                                                                                                                                                           |
| `udpMsgEncryptionTime`                     | The total amount of time, in nanoseconds, spent encrypting UDP messages.                                                                                                                                                                           |
| `viewThreadJobsDesc`                   | The number of messages currently being processed by view threads.                                                                                                                                                                               |
| `viewThreadsDesc`                      | The number of threads currently processing view messages.                                                                                                                                                                                       |
| `viewThreadStarts`                     | Total number of times a thread has been created for the view message executor.                                                                                                                                                                  |
| `waitingQueueSizeDesc`                 | The number of distribution messages currently waiting for some other resource before they can be processed.                                                                                                                                     |
| `waitingThreadJobsDesc`                | The number of messages currently being processed by waiting pooly processor threads.                                                                                                                                                            |
| `waitingThreadsDesc`                   | The number of threads currently processing messages that had to wait for a resource.                                                                                                                                                            |
| `waitingThreadStarts`                  | Total number of times a thread has been created for the waiting pool.                                                                                                                                                                           |

## Distribution Statistics Related to Slow Receivers

The distribution statistics provide statistics pertaining to slow receivers. The primary statistics are:

| Statistic                          | Description                                                                                                                                                                                           |
|------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `asyncDistributionTimeoutExceeded` | Incremented every time an asyncSocketWrite has exceeded async-distribution-timeout and an async queue has been created.                                                                               |
| `asyncQueue*`                      | Provide information about queues the producer is managing for its consumers. There are no statistics maintained for individual consumers. The following are the primary statistics of this type.      |
| `asyncQueues`                      | Indicates the number of queues currently in the producer.                                                                                                                                             |
| `asyncQueueSizeExceeded`           | Incremented every time a queue has exceeded `async-max-queue-size` and the receiver has been sent a disconnect message.                                                                               |
| `asyncQueueTimeoutExceeded`        | Incremented every time a queue flushing has exceeded `async-queue-timeout` and the receiver has been sent a disconnect message.                                                                       |
| `asyncSocketWrite*`                | Used anytime a producer is distributing to one or more consumers with a non-zero distribution timeout. These statistics also reflect the writes done by the threads that service asynchronous queues. |

## <a id="section_78D346A580724E1EA645E31626EECE40" class="no-quick-link"></a>Distributed Lock Services (DLockStats)

These statistics are for distributed lock services. The primary statistics are:

| Statistic                                    | Description                                                                                                 |
|----------------------------------------------|-------------------------------------------------------------------------------------------------------------|
| `becomeGrantorRequestsDesc`                  | Total number of times this member has explicitly requested to become lock grantor.                          |
| `createGrantorsCompletedDesc`                | Total number of initial grantors created in this process.                                                   |
| `createGrantorsInProgressDesc`               | Current number of initial grantors being created in this process.                                           |
| `destroyReadsDesc`                           | The current number of DLockService destroy read locks held by this process.                                 |
| `destroyReadWaitFailedTimeDesc`              | Total time spent waiting for a DLockService destroy read lock that was not obtained.                        |
| `destroyReadWaitsCompletedDesc`              | Total number of times a DLockService destroy read lock wait has completed successfully.                     |
| `destroyReadWaitsFailedDesc`                 | Total number of times a DLockService destroy read lock wait has completed unsuccessfully.                   |
| `destroyReadWaitsInProgressDesc`             | Current number of threads waiting for a DLockService destroy read lock.                                     |
| `destroyReadWaitTimeDesc`                    | Total time spent waiting for a DLockService destroy read lock that was obtained.                            |
| `destroyWritesDesc`                          | The current number of DLockService destroy write locks held by this process.                                |
| `destroyWriteWaitFailedTimeDesc`             | Total time spent waiting for a DLockService destroy write lock that was not obtained.                       |
| `destroyWriteWaitsCompletedDesc`             | Total number of times a DLockService destroy write lock wait has completed successfully.                    |
| `destroyWriteWaitsFailedDesc`                | Total number of times a DLockService destroy write lock wait has completed unsuccessfully.                  |
| `destroyWriteWaitsInProgressDesc`            | Current number of writes waiting for a DLockService destroy write lock.                                     |
| `destroyWriteWaitTimeDesc`                   | Total time spent waiting for a DLockService destroy write lock that was obtained.                           |
| `grantorsDesc`                               | The current number of lock grantors hosted by this system member.                                           |
| `grantorThreadExpireAndGrantLocksTimeDesc`   | Total time spent by grantor thread(s) performing expireAndGrantLocks tasks.                                 |
| `grantorThreadHandleRequestTimeoutsTimeDesc` | Total time spent by grantor thread(s) performing handleRequestTimeouts tasks.                             |
| `grantorThreadRemoveUnusedTokensTimeDesc`    | Total time spent by grantor thread(s) performing removeUnusedTokens tasks.                                  |
| `grantorThreadsCompletedDesc`                | Total number of iterations of work performed by grantor thread(s).                                          |
| `grantorThreadsInProgressDesc`               | Current iterations of work performed by grantor thread.                                                     |
| `grantorThreadTimeDesc`                      | Total time spent by grantor thread(s) performing all grantor tasks.                                         |
| `grantorWaitFailedTimeDesc`                  | Total time spent waiting for the grantor latch which resulted in failure.                                   |
| `grantorWaitsCompletedDesc`                  | Total number of times waiting threads completed waiting for the grantor latch to open.                      |
| `grantorWaitsFailedDesc`                     | Total number of times waiting threads failed to finish waiting for the grantor latch to open.               |
| `grantorWaitsInProgressDesc`                 | Current number of threads waiting for grantor latch to open.                                                |
| `grantorWaitTimeDesc`                        | Total time spent waiting for the grantor latch which resulted in success.                                   |
| `grantWaitDestroyedTimeDesc`                 | Total time spent granting of lock requests that failed because lock service was destroyed.                  |
| `grantWaitFailedTimeDesc`                    | Total time spent granting of lock requests that failed because try locks failed.                            |
| `grantWaitNotGrantorTimeDesc`                | Total time spent granting of lock requests that failed because not grantor.                                 |
| `grantWaitNotHolderTimeDesc`                 | Total time spent granting of lock requests that failed because reentrant was not holder.                    |
| `grantWaitsCompletedDesc`                    | Total number of times granting of a lock request has completed by successfully granting the lock.           |
| `grantWaitsDestroyedDesc`                    | Total number of times granting of lock request failed because lock service was destroyed.                   |
| `grantWaitsFailedDesc`                       | Total number of times granting of lock request failed because try locks failed.                             |
| `grantWaitsInProgressDesc`                   | Current number of distributed lock requests being granted.                                                  |
| `grantWaitsNotGrantorDesc`                   | Total number of times granting of lock request failed because not grantor.                                  |
| `grantWaitsNotHolderDesc`                    | Total number of times granting of lock request failed because reentrant was not holder.                     |
| `grantWaitsSuspendedDesc`                    | Total number of times granting of lock request failed because lock service was suspended.                   |
| `grantWaitsTimeoutDesc`                      | Total number of times granting of lock request failed because of a timeout.                                 |
| `grantWaitSuspendedTimeDesc`                 | Total time spent granting of lock requests that failed because lock service was suspended.                  |
| `grantWaitTimeDesc`                          | Total time spent attempting to grant a distributed lock.                                                    |
| `grantWaitTimeoutTimeDesc`                   | Total time spent granting of lock requests that failed because of a timeout.                                |
| `lockReleasesCompletedDesc`                  | Total number of times distributed lock release has completed.                                               |
| `lockReleasesInProgressDesc`                 | Current number of threads releasing a distributed lock.                                                     |
| `lockReleaseTimeDesc`                        | Total time spent releasing a distributed lock.                                                              |
| `lockWaitFailedTimeDesc`                     | Total number of times distributed lock wait has completed by failing to obtain the lock.                    |
| `lockWaitsCompletedDesc`                     | Total number of times distributed lock wait has completed by successfully obtaining the lock.               |
| `lockWaitsFailedDesc`                        | Total time spent waiting for a distributed lock that failed to be obtained.                                 |
| `lockWaitsInProgressDesc`                    | Current number of threads waiting for a distributed lock.                                                   |
| `lockWaitTimeDesc`                           | Total time spent waiting for a distributed lock that was obtained.                                          |
| `pendingRequestsDesc`                        | The current number of pending lock requests queued by grantors in this process.                             |
| `requestQueuesDesc`                          | The current number of lock request queues used by this system member.                                       |
| `serialQueueSizeDesc`                        | The number of serial distribution messages currently waiting to be processed.                               |
| `serialThreadsDesc`                          | The number of threads currently processing serial/ordered messages.                                         |
| `serviceCreateLatchTimeDesc`                 | Total time spent creating lock services before releasing create latches.                                    |
| `serviceCreatesCompletedDesc`                | Total number of lock services created in this process.                                                      |
| `serviceCreatesInProgressDesc`               | Current number of lock services being created in this process.                                              |
| `serviceInitLatchTimeDesc`                   | Total time spent creating lock services before releasing init latches.                                      |
| `servicesDesc`                               | The current number of lock services used by this system member.                                             |
| `String`                                     | createGrantorTimeDesc Total time spent waiting create the initial grantor for lock services.                |
| `tokensDesc`                                 | The current number of lock tokens used by this system member.                                               |
| `waitingQueueSizeDesc`                       | The number of distribution messages currently waiting for some other resource before they can be processed. |
| `waitingThreadsDesc`                         | The number of threads currently processing messages that had to wait for a resource.                        |

## <a id="section_5E211DDB0E8640689AD0A4659511E17A" class="no-quick-link"></a>Function Execution (FunctionStatistics)

These are the statistics for each execution of the function. The primary statistics are:

| Statistic                                            | Description                                                                                                     |
|------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
| `functionExecutionCalls`                             | Total number of FunctionService.execute() calls for given function.                                             |
| `functionExecutionsCompleted`                        | Total number of completed function.execute() calls for given function.                                          |
| `functionExecutionsCompletedProcessingTime`          | Total time consumed for all completed invocations of the given function.                                        |
| `functionExecutionsExceptions`                       | Total number of Exceptions Occurred while executing function.                                                   |
| `functionExecutionsHasResultCompletedProcessingTime` | Total time consumed for all completed given function.execute() calls where hasResult() returns true.            |
| `functionExecutionsHasResultRunning`                 | A gauge indicating the number of currently active execute() calls for functions where hasResult() returns true. |
| `functionExecutionsRunning`                          | number of currently running invocations of the given function.                                                  |
| `resultsReceived`                                    | Total number of results received and passed to the ResultCollector.                                             |
| `resultsSentToResultCollector`                       | Total number of results sent to the ResultCollector.                                                            |

## <a id="section_C4199A541B1F4B82B6178C416C0FAE4B" class="no-quick-link"></a>Gateway Queue (GatewaySenderStatistics)

These statistics are for outgoing gateway queue and its connection. The primary statistics are:

| Statistic                             | Description                                                                                                                             |
|---------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
| `batchDistributionTime`               | Total time, in nanoseconds, spent distributing batches of events to other gateways.                                                     |
| `batchesDistributed`                  | Number of batches of events operations removed from the event queue and sent.                                                           |
| `batchesRedistributed`                | Number of batches of events operations removed from the event queue and resent.                                                         |
| `batchesResized`                      | The number of batches resized due to a batch being too large.                                                                           |
| `eventQueueSize`                      | Size of the event operations queue.                                                                                                     |
| `eventQueueTime`                      | Total time, in nanoseconds, spent queueing events.                                                                                      |
| `eventsDistributed`                   | Number of events operations removed from the event queue and sent.                                                                      |
| `eventsDroppedDueToPrimarySenderNotRunning` | Number of events dropped because the primary gateway sender is not running.                                                                      |
| `eventsNotQueuedConflated`            | Number of events operations received but not added to the event queue because the queue already contains an event with the event's key. |
| `eventsProcessedByPQRM`               | Total number of events processed by the parallel queue removal message (PQRM).                                                                                 |
| `eventsQueued`                        | Number of events operations added to the event queue.                                                                                   |
| `secondaryEventQueueSize`             | Size of the secondary event queue.                 |
| `unprocessedEventMapSize`             | Current number of events entries in the secondary's unprocessed event map.                                                              |
| `unprocessedEventsAddedBySecondary`   | Number of events added to the secondary's unprocessed event map by the secondary.                                                       |
| `unprocessedEventsRemovedByPrimary`   | Number of events removed through a listener from the secondary's unprocessed event map by the primary.                                  |
| `unprocessedEventsRemovedByTimeout`   | Number of events removed from the secondary's unprocessed event map by a timeout.                                                       |
| `unprocessedTokenMapSize`             | Current number of tokens entries in the secondary's unprocessed token map.                                                              |
| `unprocessedTokensAddedByPrimary`     | Number of tokens added through a listener to the secondary's unprocessed token map by the primary.                                      |
| `unprocessedTokensRemovedBySecondary` | Number of tokens removed from the secondary's unprocessed token map by the secondary.                                                   |
| `unprocessedTokensRemovedByTimeout`   | Number of tokens removed from the secondary's unprocessed token map by a timeout.                                                       |

## <a id="section_86A61860024B480592DAC67FFB882538" class="no-quick-link"></a>Indexes (IndexStats)

## Query-Independent Statistics on Indexes

| Statistic           | Description                                                                                                                                             |
|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
| `numKeys`           | Number of keys currently stored in the Index.                                                                                                           |
| `numUpdates`        | Number of updates applied and completed on the Index while inserting, modifying , or deleting corresponding data in <%=vars.product_name%>. |
| `numValues`         | Number of values currently stored in the Index.                                                                                                         |
| `updatesInProgress` | Current number of updates in progress on the Index. Concurrent updates on an index are allowed.                                                         |
| `updateTime`        | Total time taken in applying and completing updates on the Index.                                                                                       |

## Query-Dependent Statistics on Indexes

| Statistic        | Description                                                                                                                                                                            |
|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `numUses`        | Number of times the Index has been used for querying.                                                                                                                                  |
| `usesInProgress` | Current number of uses of the index in progress or current number of concurrent threads accessing the index for querying. Concurrent use of an index is allowed for different queries. |
| `useTime`        | Total time during the use of the Index for querying.                                                                                                                                   |

## <a id="section_607C3867602E410CAE5FAB26A7FF1CB9" class="no-quick-link"></a>JVM Performance

## <%=vars.product_name%> JVM Resource Manager (ResourceManagerStats)

Statistics related to the <%=vars.product_name%>'s resource manager. Use these to help analyze and tune your JVM memory settings and the <%=vars.product_name%> resource manager settings. The primary statistics are:

| Statistic             | Description                                                                                                  |
|-----------------------|--------------------------------------------------------------------------------------------------------------|
| `criticalThreshold`   | The cache resource-manager setting critical-heap-percentage.                                                 |
| `evictionStartEvents` | Number of times eviction activities were started due to the heap use going over the eviction threshold.      |
| `evictionStopEvents`  | Number of times eviction activities were stopped due to the heap use going below the eviction threshold.     |
| `evictionThreshold`   | The cache resource-manager setting eviction-heap-percentage.                                                 |
| `heapCriticalEvents`  | Number of times incoming cache activities were blocked due to heap use going over the critical threshold.    |
| `heapSafeEvents`      | Number of times incoming cache activities were unblocked due to heap use going under the critical threshold. |
| `tenuredHeapUsed`     | Percentage of tenured heap currently in use.                                                                 |

## JVM Java Runtime (VMStats)

Show the JVM’s Java usage and can be used to detect possible problems with memory consumption. These statistics are recorded from java.lang.Runtime under VMStats. The primary statistics are:

| Statistic             | Description                                                                                                           |
|-----------------------|-----------------------------------------------------------------------------------------------------------------------|
| `cpus`                | Number of CPUs available to the member on its machine.                                                                |
| `daemonThreads`       | Current number of live daemon threads in this JVM.                                                                    |
| `fdLimit`             | Maximum number of file descriptors.                                                                                   |
| `fdsOpen`             | Current number of open file descriptors.                                                                              |
| `freeMemory`          | An approximation for the total amount of memory, measured in bytes, currently available for future allocated objects. |
| `loadedClasses`       | Total number of classes loaded since the JVM started.                                                                 |
| `maxMemory`           | The maximum amount of memory, measured in bytes, that the JVM will attempt to use.                                    |
| `peakThreads`         | High water mark of live threads in this JVM.                                                                          |
| `pendingFinalization` | Number of objects that are pending finalization in the JVM.                                                           |
| `processCpuTime`      | CPU time, measured in nanoseconds, used by the process.                                                               |
| `threads`             | Current number of live threads (both daemon and non-daemon) in this JVM.                                              |
| `threadStarts`        | Total number of times a thread has been started since this JVM started.                                               |
| `totalMemory`         | The total amount of memory, measure in bytes, currently available for current and future objects.                     |
| `unloadedClasses`     | Total number of classes unloaded since the JVM started.                                                               |

## JVM Garbage Collection (VMGCStats)

These statistics show how much time used by different JVM garbage collection. The primary statistics are:

| Statistic        | Description                                                                 |
|------------------|-----------------------------------------------------------------------------|
| `collections`    | Total number of collections this garbage collector has done.                |
| `collectionTime` | Approximate elapsed time spent doing collections by this garbage collector. |

## JVM Garbage Collector Memory Pools (VMMemoryPoolStats)

These statistics describe memory usage in different garbage collector memory pools. The primary statistics are:

| Statistic                  | Description                                                                                                                |
|----------------------------|----------------------------------------------------------------------------------------------------------------------------|
| `collectionUsageExceeded`  | Total number of times the garbage collector detected that memory usage in this pool exceeded the collectionUsageThreshold. |
| `collectionUsageThreshold` | The collection usage threshold, measured in bytes, for this pool.                                                          |
| `collectionUsedMemory`     | The estimated amount of used memory, measured in bytes, after that last garbage collection of this pool.                   |
| `currentCommittedMemory`   | The amount of committed memory, measured in bytes, for this pool.                                                          |
| `currentInitMemory`        | Initial memory the JVM requested from the operating system for this pool.                                                  |
| `currentMaxMemory`         | The maximum amount of memory, measured in bytes, this pool can have.                                                       |
| `currentUsedMemory`        | The estimated amount of used memory, measured in bytes, currently in use for this pool.                                    |
| `usageExceeded`            | Total number of times that memory usage in this pool exceeded the usageThreshold.                                          |
| `usageThreshold`           | The usage threshold, measured in bytes, for this pool.                                                                     |

## JVM Heap Memory Usage (VMMemoryUsageStats)

Show details on how the Java heap memory is being used. The primary statistics are:

| Statistic         | Description                                                               |
|-------------------|---------------------------------------------------------------------------|
| `committedMemory` | The amount of committed memory, measured in bytes, for this area.         |
| `initMemory`      | Initial memory the JVM requested from the operating system for this area. |
| `maxMemory`       | The maximum amount of memory, measured in bytes, this area can have.      |
| `usedMemory`      | The amount of used memory, measured in bytes, for this area.              |

## JVM Thread stats (VMThreadStats)

Show details about the JVM thread. The primary statistics are:

| Statistic     | Description                                                                                                                                                                           |
|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|                                                                                                           |
| `blocked`     | Total number of times this thread blocked to enter or reenter a monitor.                                                                                                              |
| `blockedTime` | Total amount of elapsed time, approximately, that this thread has spent blocked to enter or reenter a monitor. May need to be enabled by setting `-Dgemfire.enableContentionTime=true`|
| `cpuTime`     | Total cpu time for this thread.  May need to be enabled by setting `-Dgemfire.enableCpuTime=true`.                                                                                    |
| `inNative`    | 1 if the thread is in native code.                                                                                                                                                    |
| `lockOwner`   | The thread id that owns the lock that this thread is blocking on.                                                                                                                     |
| `suspended`   | 1 if the thread is suspended.                                                                                                                                                         |
| `userTime`    | Total user time for this thread. May need to be enabled by setting `-Dgemfire.enableCpuTime=true`.                                                                                    |
| `waited`      | Total number of times this thread waited for notification.                                                                                                                            |
| `waitedTime`  | Total amount of elapsed time, approximately, that this thread has spent waiting for notification. May need to be enabled by setting `-Dgemfire.enableContentionTime=true`             |

## <a id="section_C48B654F973E4B44AD825D459C23A6CD" class="no-quick-link"></a>Locator (LocatorStats)

These statistics are on the <%=vars.product_name%> locator. The primary statistics are:

| Statistic                | Description                                                                   |
|--------------------------|-------------------------------------------------------------------------------|
| `ENDPOINTS_KNOWN`        | Number of servers this locator knows about.                                   |
| `KNOWN_LOCATORS`         | Number of locators known to this locator.                                     |
| `REQUEST_TIME`           | Time, measured in nanoseconds, spent processing server location requests.     |
| `REQUESTS_IN_PROGRESS`   | The number of location requests currently being processed by the thread pool. |
| `REQUESTS_TO_LOCATOR`    | Number of requests this locator has received from clients.                    |
| `RESPONSE_TIME`          | Time, measured in nanoseconds, spent sending location responses to clients.   |
| `RESPONSES_FROM_LOCATOR` | Number of responses this locator has sent to clients.                         |
| `SERVER_LOAD_UPDATES`    | Total number of times a server load update has been received.                 |

## <a id="LuceneStats" class="no-quick-link"></a>Lucene Indexes (LuceneIndexStats)

These statistics quantify the use of Lucene indexes. The primary statistics are:

| Statistic             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `queryExecutions`         | The number of Lucene queries executed on this member.    |
| `queryExecutionTime`         | The amount of time in nanoseconds spent executing Lucene queries.    |
| `queryExecutionsInProgress`  | The number of query executions currently in progress.    |
| `queryExecutionTotalHits`  | The total number of documents returned by query executions.    |
| `repositoryQueryExecutions`  | The number of Lucene repository queries executed on this member.    |
| `repositoryQueryExecutionTime`  | The amount of time in nanoseconds spent executing Lucene repository queries.    |
| `repositoryQueryExecutionsInProgress`  | The number of repository query executions currently in progress.    |
| `repositoryQueryExecutionTotalHits`  | The total number of documents returned by repository query executions.    |
| `updates`  | The number of Lucene index documents added or removed on this member.    |
| `updateTime`  | The amount of time in nanoseconds spent adding or removing documents from the index.    |
| `updatesInProgress`  | The number of index updates in progress.    |
| `commits`  | The number of Lucene index commits on this member.    |
| `commitTime`  | The amount of time in nanoseconds spent in Lucene index commits.    |
| `commitsInProgress`  | The number of Lucene index commits in progress.    |
| `documents`  | The number of documents in the index.    |

## <a id="topic_ohc_tjk_w5" class="no-quick-link"></a>Off-Heap (OffHeapMemoryStats)

These statistics quantify the use of off-heap memory. The primary statistics are:

| Statistic             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `defragmentations`         | The total number of times the off-heap memory manager has invoked the defragmentation algorithm on the off-heap memory space.                                                                                                                                                                                                                                                                                                                                                                                                       |
| `defragmentationsInProgress` | The number of defragmentation operations currently in progress.                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `defragmentationTime` | The total number of nanoseconds spent running the defragmentation algorithm on off-heap memory space fragments.                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `fragmentation`       | This statistic gives an indication of the level of external fragmentation in the off-heap memory space by providing a ratio of the current number of fragments of free space to the largest number of fragments that could be formed from that free space. It is expressed as a percentage; the higher this value, the more fragmented the free space currently is. This statistic is 0 if the memory manager has never run its defragmentation algorithm on the off-heap space, and it is recalculated after each defragmentation. |
| `fragments`           | The current number of fragments of free off-heap memory. This statistic is 0 if no defragmentation has ever been done, and it is updated after each defragmentation.                                                                                                                                                                                                                                                                                                                                                                |
| `freeMemory`          | The number of bytes of off-heap memory that are not currently allocated.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `largestFragment`     | The number of bytes in the largest fragment of memory found by the last run of the defragmentation algorithm. This statistic is updated after each defragmentation.                                                                                                                                                                                                                                                                                                                                                                 |
| `maxMemory`           | The number of bytes of off-heap memory initially declared.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `objects`             | The number of objects currently stored in off-heap memory.                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `reads`               | The total number of reads of objects that are stored in off-heap memory.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `usedMemory`          | The number of bytes of off-heap memory currently used for region values.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## <a id="section_923B28F01BC3416786D3AFBD87F22A5E" class="no-quick-link"></a>Operating System Statistics - Linux

Operating system statistics are available only for Linux operating systems.

## Linux Process Performance (LinuxProcessStats)

Operating system statistics on the member’s process. The primary statistics are:

| Statistic   | Description                                         |
|-------------|-----------------------------------------------------|
| `imageSize` | Size, in megabytes, of the process's image.         |
| `rssSize`   | Size, in megabytes, of the process's resident size. |

## Linux Operating System (LinuxSystemStats)

Operating system statistics on the member’s machine. These can be used to determine total cpu,
memory, and disk usage on the machine. The primary statistics are:

| Statistic         | Description                                                                                                                                                                                                                                                                                                                               |
|-------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `allocatedSwap`   | Number of megabytes of swap space that have actually been written to. Swap space must be reserved before it can be allocated.                                                                                                                                                                                                             |
| `bufferMemory`    | Number of megabytes of memory allocated to buffers.                                                                                                                                                                                                                                                                                       |
| `contextSwitches` | Total number of context switches from one thread to another on the computer. Thread switches can occur either inside of a single process or across processes. A thread switch may be caused either by one thread asking another for information, or by a thread being preempted by another, higher priority thread becoming ready to run. |
| `cpuActive`       | Percentage of the total available time that has been used in a non-idle state.                                                                                                                                                                                                                                                            |
| `cpuIdle`         | Percentage of the total available time that has been spent sleeping.                                                                                                                                                                                                                                                                      |
| `cpuNice`         | Percentage of the total available time that has been used to execute user code in processes with low priority.                                                                                                                                                                                                                            |
| `cpus`            | Number of online CPUs (items) on the local machine.                                                                                                                                                                                                                                                                                       |
| `cpuSystem`       | Percentage of the total available time that has been used to execute system (that is, kernel) code.                                                                                                                                                                                                                                       |
| `cpuUser`         | Percentage of the total available time that has been used to execute user code.                                                                                                                                                                                                                                                           |
| `freeMemory`      | Number of megabytes of unused memory on the machine.                                                                                                                                                                                                                                                                                      |
| `loadAverage1`    | Average number of threads in the run queue or waiting for disk I/O over the last minute.                                                                                                                                                                                                                                                  |
| `loadAverage15`   | Average number of threads in the run queue or waiting for disk I/O over the last fifteen minutes.                                                                                                                                                                                                                                         |
| `loadAverage5`    | Average number of threads in the run queue or waiting for disk I/O over the last five minutes.                                                                                                                                                                                                                                            |
| `loopbackBytes`   | Number of network bytes sent (or received) on the loopback interface.                                                                                                                                                                                                                                                                     |
| `loopbackPackets` | Number of network packets sent (or received) on the loopback interface.                                                                                                                                                                                                                                                                   |
| `pagesPagedIn`    | Total number of pages that have been brought into memory from disk by the operating system's memory manager.                                                                                                                                                                                                                              |
| `pagesPagedOut`   | Total number of pages that have been flushed from memory to disk by the operating system's memory manager.                                                                                                                                                                                                                                |
| `pagesSwappedIn`  | Total number of swap pages that have been read in from disk by the operating system's memory manager.                                                                                                                                                                                                                                     |
| `pagesSwappedOut` | Total number of swap pages that have been written out to disk by the operating system's memory manager.                                                                                                                                                                                                                                   |
| `physicalMemory`  | Actual amount of total physical memory on the machine.                                                                                                                                                                                                                                                                                    |
| `processCreates`  | The total number of times a process (operation) has been created.                                                                                                                                                                                                                                                                         |
| `processes`       | Number of processes in the computer at the time of data collection. Notice that this is an instantaneous count, not an average over the time interval. Each process represents the running of a program.                                                                                                                                  |
| `recvBytes`       | Total number of network bytes received (excluding loopback).                                                                                                                                                                                                                                                                              |
| `recvDrops`       | Total number network receives (packets) dropped.                                                                                                                                                                                                                                                                                          |
| `recvErrors`      | Total number of network receive errors.                                                                                                                                                                                                                                                                                                   |
| `recvPackets`     | Total number of network packets received (excluding loopback).                                                                                                                                                                                                                                                                            |
| `sharedMemory`    | Number of megabytes of shared memory on the machine.                                                                                                                                                                                                                                                                                      |
| `unallocatedSwap` | Number of megabytes of swap space that have not been allocated.                                                                                                                                                                                                                                                                           |
| `xmitBytes`       | Total number of network bytes transmitted (excluding loopback).                                                                                                                                                                                                                                                                           |
| `xmitCollisions`  | Total number of network transmit collisions.                                                                                                                                                                                                                                                                                              |
| `xmitDrops`       | Total number of network transmits (packets) dropped.                                                                                                                                                                                                                                                                                      |
| `xmitErrors`      | Total number of network transmit errors.                                                                                                                                                                                                                                                                                                  |
| `xmitPackets`     | Total number of network packets transmitted (excluding loopback).                                                                                                                                                                                                                                                                          |

<a id="section_35AC170770C944C3A336D9AEC2D2F7C5"></a>

# Partitioned Regions (PartitionedRegion&lt;partitioned\_region\_name&gt;Statistics)

**Partitioned Region Statistics on Region Operations**

These statistics track the standard region operations executed in the member. Operations can originate locally or in a request from a remote member.

**Note:**
Unsuccessful operations are not counted in these statistics.

The primary statistics are:

| Statistic                      | Description                                                                                                                                                                                                                             |
|--------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `containsKeyCompleted`         | Number of successful containsKey operations in this member.                                                                                                                                                                             |
| `containsKeyOpsRetried`        | Number of containsKey or containsValueForKey operations retried due to failures. This stat counts each retried operation only once, even if it requires multiple retries.                                                               |
| `containsKeyRetries`           | Total number of times containsKey or containsValueForKey operations were retried. If multiple retries are required on a single operation, this stat counts them all.                                                                    |
| `containsKeyTime`              | Total time, in nanoseconds, the member spent doing containsKey operations in this member.                                                                                                                                               |
| `containsValueForKeyCompleted` | Number of successful containsValueForKey operations in this member.                                                                                                                                                                     |
| `containsValueForKeyTime`      | Total time, in nanoseconds, the member spent doing containsValueForKey operations in this member.                                                                                                                                       |
| `createOpsRetried`             | Number of create operations retried due to failures. This stat counts each retried operation only once, even if it requires multiple retries.                                                                                           |
| `createRetries`                | Total number of times create operations were retried. If multiple retries are required on a single operation, this stat counts them all.                                                                                                |
| `createsCompleted`             | Number of successful create operations in this member.                                                                                                                                                                                  |
| `createTime`                   | Total time, in nanoseconds, the member spent doing create operations in this member.                                                                                                                                                    |
| `destroyOpsRetried`            | Number of destroy operations retried due to failures. This stat counts each retried operation only once, even if it requires multiple retries.                                                                                          |
| `destroyRetries`               | Total number of times destroy operations were retried. If multiple retries are required on a single operation, this stat counts them all.                                                                                               |
| `destroysCompleted`            | Number of successful destroy operations in this member.                                                                                                                                                                                 |
| `destroyTime`                  | Total time, in nanoseconds, the member spent doing destroy operations in this member.                                                                                                                                                   |
| `getEntriesCompleted`          | Number of get entry operations completed.                                                                                                                                                                                               |
| `getEntriesTime`               | Total time, in nanoseconds, spent performing get entry operations.                                                                                                                                                                      |
| `getOpsRetried`                | Number of get operations retried due to failures. This stat counts each retried operation only once, even if it requires multiple retries.                                                                                              |
| `getRetries`                   | Total number of times get operations were retried. If multiple retries are required on a single operation, this stat counts them all.                                                                                                   |
| `getsCompleted`                | Number of successful get operations in this member.                                                                                                                                                                                     |
| `getTime`                      | Total time, in nanoseconds, the member spent doing get operations in this member.                                                                                                                                                       |
| `invalidateOpsRetried`         | Number of invalidate operations retried due to failures. This stat counts each retried operation only once, even if it requires multiple retries.                                                                                       |
| `invalidateRetries`            | Total number of times invalidate operations were retried. If multiple retries are required on a single operation, this stat counts them all.                                                                                            |
| `invalidatesCompleted`         | Number of successful invalidate operations in this member.                                                                                                                                                                              |
| `invalidateTime`               | Total time, in nanoseconds, the member spent doing invalidate operations in this member.                                                                                                                                                |
| `putOpsRetried`                | Number of put operations retried due to failures. This stat counts each retried operation only once, even if it requires multiple retries.                                                                                              |
| `putRetries`                   | Total number of times put operations were retried. If multiple retries are required on a single operation, this stat counts them all.                                                                                                   |
| `putsCompleted`                | Number of successful put operations in this member.                                                                                                                                                                                     |
| `putTime`                      | Total time, in nanoseconds, the member spent doing put operations in this member.                                                                                                                                                       |
| `replyWaitMaxTime`             | Longest amount of time, in milliseconds, taken to write a message and receive a reply before a forced disconnect occurs. This stat is always active regardless of the setting of the enable-time-statistics gemfire.properties setting. |
| `sentMessageMaxTime`           | Longest amount of time, in milliseconds, taken to write a message to the network before a forced disconnect occurs. This stat is always active regardless of the setting of the enable-time-statistics gemfire.properties setting.      |

## Partitioned Region Statistics on Partition Messages

**Note:**
Unsuccessful operations and local operations—those that originated in this member—are not counted in these statistics.

The primary statistics are:

| Statistic                         | Description                                                                                                               |
|-----------------------------------|---------------------------------------------------------------------------------------------------------------------------|
| `partitionMessagesProcessed`      | Number of region operations executed in this member at the request of other data stores for the region.                   |
| `partitionMessagesProcessingTime` | Total time, in nanoseconds, the member spent executing region operations in this member at the request of remote members. |
| `partitionMessagesReceived`       | Number of remote requests this member received for any region operation in this member.                                   |
| `partitionMessagesSent`           | Number of requests this member sent for any region operation on a remote member.                                          |
| `prMetaDataSentCount`             | Number of times meta data refresh sent on client's request. Used with pr-single-hop functionality.                        |

## Partitioned Region Statistics on Data Entry Caching

These statistics track the pattern of data entry distribution among the buckets in this member. The primary statistics are:

| Statistic                           | Description                                                                                                                                                     |
|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `avgBucketSize`                     | Average number of entries for each of the primary buckets in this member.                                                                                       |
| `bucketCount`                       | Total number of buckets in this member.                                                                                                                         |
| `bucketCreationsCompleted`          | Number of logical bucket creation operations requests completed after which the bucket was created.                                                             |
| `bucketCreationsDiscoveryCompleted` | Number of bucket creation operations requests completed after which it was discovered that the bucket was created by another member.                            |
| `bucketCreationsDiscoveryTime`      | Total time, in nanoseconds, spent waiting for bucket creation requests to complete after which it was discovered that the bucket was created by another member. |
| `bucketCreationsTime`               | Total time, in nanoseconds, spent waiting for bucket creation requests to complete after which the bucket was created.                                          |
| `dataStoreBytesInUse`               | The number of bytes stored in this cache for the named partitioned region.                                                                                      |
| `dataStoreEntryCount`               | Total number of entries in all the buckets in this member.                                                                                                      |
| `maxBucketSize`                     | Largest number of entries in the primary buckets in this member.                                                                                                |
| `minBucketSize`                     | Smallest number of entries in the primary buckets in this member.                                                                                               |
| `totalBucketSize`                   | Total number of entries in the primary buckets.                                                                                                                 |

## Partitioned Region Statistics on Redundancy

These statistics track status on partitioned region data copies. The primary statistics are:

<table>
<colgroup>
<col width="50%" />
<col width="50%" />
</colgroup>
<thead>
<tr class="header">
<th>Statistic</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="ph codeph">actualRedundantCopies</code></td>
<td>The least current redundant number of copies for any data in this partitioned region (there may be some data that is fully redundant, but some data will have only this number of copies). This value may drop when a data store is lost or rise when a data store is added. This value may drop temporarily during partitioned region creation or destruction and then rise again.
<div class="note note">
<b>Note:</b>
<p>If this value remains low, then partitioned region data is at risk and may be lost if another data store is lost.</p>
</div>
A healthy partitioned region will maintain a value equal to configuredRedundantCopies. The user should add one or more data stores if the value remains low. High-availability may result in a brief fluctuation, but it should return to a value equal to configuredRedundantCopies if there are sufficient data stores present (that is, killing one data store will cause its data to fail over to another data store).</td>
</tr>
<tr>
<td><code class="ph codeph">configuredRedundantCopies</code></td>
<td>This is equivalent to the PartitionAttributes.getRedundantCopies configuration that was used to create this partitioned region. This value remains unchanged for a given partitioned region.</td>
</tr>
<tr>
<td><code class="ph codeph">lowRedundancyBucketCount</code></td>
<td>The number of buckets in this partitioned region that currently have fewer copies than the configuredRedundantCopies. This value may rise above zero when a data store is lost and return to zero when one or more data stores are added. This value may rise temporarily during partitioned region creation or destruction and then return to zero.
<div class="note note">
<b>Note:</b>
<p>If this value remains above zero, then partitioned region data is at risk and may be lost if another data store is lost.</p>
</div>
This value will be above zero whenever actualRedundantCopies is less than configuredRedundantCopies. A healthy partitioned region will maintain a value of zero. The user should add one or more datstores if this value remains above zero. High-availability may result in a brief fluctuation, but it should return to zero if there are sufficient data stores present (that is, killing one data store will cause its data to fail over to another data store).</td>
</tr>
</tbody>
</table>

## <a id="section_374FBD92A3B74F6FA08AA23047929B4F" class="no-quick-link"></a>Region Entry Eviction – Count-Based (LRUStatistics)

The entry-count least recently used (LRU) eviction mechanism records these LRUStatistics. The primary statistics are:

| Statistic          | Description                                                                |
|--------------------|----------------------------------------------------------------------------|
| `entriesAllowed`   | Number of entries allowed in this region.                                  |
| `entryCount`       | Number of entries in this region.                                          |
| `lruDestroys`      | Number of entry destroys triggered by an LRU.                              |
| `lruDestroysLimit` | Maximum number of entry destroys triggered by an LRU before a scan occurs. |
| `lruEvaluations`   | Number of entries evaluated during LRU operations                          |
| `lruEvictions`     | Number of total entry evictions triggered by an LRU.                       |
| `lruGreedyReturns` | Number of non-LRU entries evicted during LRU operations.                   |

## <a id="section_3B74F6FA08A374FBD92AA23047929B4F" class="no-quick-link"></a>Region Entry Eviction – Heap-based eviction (HeapLRUStatistics)

The least recently used (LRU) mechanism that keeps the JVM heap size under a given set point records these LRUStatistics. The primary statistics are:

| Statistic          | Description                                                                |
|--------------------|----------------------------------------------------------------------------|
| `entryBites`       | The amount of memory currently used by regions configured for eviction.    |
| `lruDestroys`      | Number of entry destroys triggered by an LRU.                              |
| `lruEvaluations`   | Number of entries evaluated during LRU operations                          |
| `lruEvictions`     | Total number of entry evictions triggered by an LRU.                       |
| `lruGreedyReturns` | Number of non-LRU entries evicted during LRU operations.                   |

## <a id="section_3D2AA2BCE5B6485699A7B6ADD1C49FF7" class="no-quick-link"></a>Region Entry Eviction – Size-based (MemLRUStatistics)

The least recently used (LRU) mechanism that keeps the size of a region under a given set point records these MemLRUStatistics. The primary statistics are:

| Statistic          | Description                                                             |
|--------------------|-------------------------------------------------------------------------|
| `byteCount`        | Number of bytes in region                                               |
| `bytesAllowed`     | Total number of bytes allowed in this region.                           |
| `lruDestroys`      | Number of entry destroys triggered by LRU.                              |
| `lruEvaluations`   | Number of entries evaluated during LRU operations.                      |
| `lruEvictions`     | Total number of entry evictions triggered by LRU.                       |
| `lruGreedyReturns` | Number of non-LRU entries evicted during LRU operations.                |

## <a id="section_5362EF9AECBC48D69475697109ABEDFA" class="no-quick-link"></a>Server Notifications for All Clients (CacheClientNotifierStatistics)

Statistics regarding cache server operations sent to all clients.

| Statistic                            | Description                                                                               |
|--------------------------------------|-------------------------------------------------------------------------------------------|
| `clientHealthMonitorRegister`        | Number of clients that register.                                                          |
| `clientHealthMonitorUnRegister`      | Number of clients that unregister.                                                        |
| `clientRegistrations`                | Number of clients (operations) that have registered for updates.                          |
| `clientRegistrationTime`             | Total time, in nanoseconds, spent doing client registrations.                             |
| `durableReconnectionCount`           | Number of times the same durable client connects to the server.                           |
| `eventProcessingTime`                | Total time, in nanoseconds, spent by the cache client notifier processing events.         |
| `events`                             | Number of events (operations) processed by the cache client notifier.                     |
| `eventsEnqueuedWhileClientAwayCount` | Number of events enqueued for a durable client.                                           |
| `queueDroppedCount`                  | Number of times the client subscription queue for a particular durable client is dropped. |

## <a id="section_E03865F509E543D9B8F9462B3DA6255E" class="no-quick-link"></a>Server Notifications for Single Client (CacheClientProxyStatistics)

Statistics regarding cache server operations and cache server client notifications sent to a single client.

| Statistic                        | Description                                                                                                                                                                          |
|----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `messageProcessingTime`          | Total time, in nanoseconds, spent sending messages to clients.                                                                                                                       |
| `messageQueueSize`               | Size of the operations subscription queue.                                                                                                                                           |
| `messagesFailedQueued`           | Number of client operations messages attempted but failed to be added to the subscription queue.                                                                                     |
| `messagesNotQueuedConflated`     | Number of client operations messages received but not added to the subscription queue because the queue already contains a message with the message's key.                           |
| `messagesNotQueuedNotInterested` | Number of client operations messages received but not added to the subscription queue because the client represented by the receiving proxy was not interested in the message's key. |
| `messagesNotQueuedOriginator`    | Number of client operations messages received but not added to the subscription queue, because the receiving proxy represents the client originating the message.                    |
| `messagesProcessed`              | Number of client operations messages removed from the subscription queue and sent.                                                                                                   |
| `messagesQueued`                 | Number of client operations messages added to the subscription queue.                                                                                                                |
| `messagesReceived`               | Number of client operations messages received.                                                                                                                                       |

## <a id="section_3AB1C0AA55014163A2BBF68E13D25E3A" class="no-quick-link"></a>Server-to-Client Messaging Performance (ClientSubscriptionStats)

Collected in the server, these statistics track event messages queued on the server to be sent to the client. The statistics are gathered for each client subscription queue and are incremental for the lifetime of the queue. The event messages are referred to as events in these statistics. The primary statistics are:

| Statistic             | Description                                                                                                                                                                                                                                |
|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `eventsConflated`     | Number of events conflated. If this is high, the server's dispatcher may be running slowly. This could be caused by one or more slow client.s causing blocking in their subscription queues.                                               |
| `eventsExpired`       | Number of events that have expired while in the subscription queue. If this is high on a secondary server, it might be that the MessageSyncInterval on the primary is set too high, causing the secondary to fall behind in event cleanup. |
| `eventsQueued`        | Number of events placed in the subscription queue.                                                                                                                                                                                         |
| `eventsRemoved`       | Number of events removed from the subscription queue.                                                                                                                                                                                      |
| `eventsRemovedByQrm`  | Number of events removed based on a message sent from the primary. Only incremented while the subscription queue is in a secondary server.                                                                                                 |
| `eventsTaken`         | Number of events taken from the subscription queue.                                                                                                                                                                                        |
| `numSequenceViolated` | Number of events that had sequence ID less than or equal to the last sequence ID. The system assumes these events are duplicates and does not add them to the subscription queue. A non-zero value may indicate message loss.              |
| `numVoidRemovals`     | Number of events which were supposed to be destroyed from the subscription queue through remove but were removed by some other operation like conflation or expiration.                                                                    |
| `threadIdentifiers`   | Number of ThreadIdentifier objects (units) in the subscription queue.                                                                                                                                                                      |

## <a id="section_55F3AF6413474317902845EE4996CC21" class="no-quick-link"></a>Statistics Collection (StatSampler)

These statistics show how much time is spent collecting statistics. The primary statistics are:

| Statistic     | Description                                    |
|---------------|------------------------------------------------|
| `sampleCount` | Total number of samples taken by this sampler. |
| `sampleTime`  | Total amount of time spent taking samples.     |
