NCache Performance Counters: Analysis and Monitoring
NCache performance counters are very helpful to analyze application's performance. These counters can also help identify any problem within NCache or the network where NCache is operating. Performance counters are also used to distinguish between different products' throughput, so it is very important to understand them correctly.
In this document some of the main NCache performance counters are explained and how they should be used in order to analyze the performance or an issue.
Analyze Performance
NCache is mainly used to store application data as custom objects or sessions. So application's performance is highly dependent on NCache. NCache counters are divided in two parts; Client Side Counters and Server Side Counters.
Server Side Counters
Server side counters shows the overall performance of the clustered cache. They mainly provide with the information about how fast NCache server nodes reply to application requests. The counters that should be monitored for performance analysis are given below:
- [NCache Cache Specific] Fetches/sec: This counter is the measure of number of fetch operations per second.
Note: Here fetch operations are Get or GetCacheItem operation calls.
- [NCache Cache Specific] Additions/sec: This counter is the measure of number of add operations per second.
- [NCache Cache Specific] Additions/sec: This counter is the measure of number of add operations per second.
- [NCache Cache Specific] Updates/sec: This counter is the measure of number of insert operations per second.
- [NCache Cache Specific] Deletes/sec: This counter is the measure of number of remove operations per second.
- [NCache Cache Specific] Average ms/fetch: This counter is the measure of average time, in milliseconds, taken to complete one fetch operation.
Note: Here fetch operations are Get or GetCacheItem operation calls.
- [NCache Cache Specific] Average ms/insert: This counter is the measure of average time, in milliseconds, taken to complete one insert operation.
- [NCache Cache Specific] Average ms/remove:: This counter is the measure of average time, in milliseconds, taken to complete one remove operation.
- [NCache Cache Specific] Average ms/cache operation: This counter is the measure of average time, in seconds, taken to complete one cache-operation.
- [NCache Cache Specific] Evictions/sec: This counter is the measure of number of items evicted per second.
- [NCache Server] Requests/sec:This counter is the measure of number of requests received (meaning cache commands like add, get, insert, remove etc.) from all clients by this cache server.
The first four counters in this list give the number of fetches, additions and updates per second. These are basically application requests on NCache.
The next four counters give the time spent on each request in milliseconds. If the numbers are high for these counters then it means that either the cache item is huge or the cluster is busy in other operations like state transfer, data balancing etc. For an object of size less than 10 KB it is normally less than a millisecond.
Requests/sec is the average of all the request on a cache server node whether they are additions, fetches or updates. A single NCache node can handle around 8000 requests/sec with 1KB object size.
If your cache becomes full and cache is evicting items then you will see a value for evictions/sec counter. Evictions can slow down the performance so it is important to keep log of this counter.
Client Side Counters
Client Side counters give the best view for NCache performance. From these counters you can tell the performance boost given by NCache to your application. Here are the counters that should be monitored:
- [NCache Client] Average ms/add: This counter is the measures of average time, in milliseconds, spent to perform a single add operation.
- [NCache Client] Average ms/fetch: This counter is the measure of average time spent to perform a single fetch operation.
Note: Here fetch operations are Get or GetCacheItem operation calls.
- [NCache Client] Average ms/remove: This counter is the measure of average time spent to perform a single remove operation.
- [NCache Client] Average ms/insert: : This counter is the measure of average time spent to perform a single insert operation.
- [NCache Client] Average Item Size: This counter gives information regarding the average size of data added by a client in cache at a given time.
Note: If compression is enabled the average size is calculated using the compressed value.
- [NCache Client] Compression/sec: This counter is the measure of rate of compression performed on the data per second.
Note: Compression per second occurs when compression is enabled. Also size is specified in bytes.
- [NCache Client] Request Queue Size: This counter is the measure of the size of a request queue at a given instance on a cache client.
Note: Here requests are the operation calls for cache server. Also size is specified in bytes.
The first four counters here give the time spent by NCache to serve a given request, whether it is addition, fetch or an update. For a 1 KB object the time should be less than 2 ms, it can even be less depending on the network latency. Less than 10 KB object should be around 3 ms. If it's more than 3 ms then you should tune NCache settings so that it can perform better.
The first four counter values depend heavily on average item size. Large items will take more time to serve as compared to a small item. So it is important to log average items size if you are logging counters for performance analysis.
Compression/sec counter will only show value if you are using NCache compression feature.
Request queue size will have all the pending requests. If this value is constantly increasing then NCache cluster is unable to serve requests in a timely fashion. In this case you would either need add more nodes to the cluster or diagnose the problem on cluster side or network between the client server and cache server.
Identifying an Issue
Customers mostly face issues like slow performance, application not responding or the application is not fetching data from cache.
- In case of a slow performance caused by NCache the value of above mentioned client side counters will constantly increase (especially request queue size). This will indicate that the problem is arising due to NCache. Involve Alachisoft Support if this is the case
- If application is not fetching data or application is not responding then NCache client side can help to identify that whether the issue is with NCache or the application itself. If you are seeing that requests are being served by NCache in a timely manner then NCache is performing fine, the issue is with application itself
Here are some more counters from NCache that can be used for monitoring purposes:
NCache Client
- [NCache Client] Fetches/sec: This counter is the measure of the number of fetch operations called by the cache client per second.
Note: Here fetch operations are Get or GetCacheItem operation calls. This counter is incremented irrespective of the success or failure of the operation.
- [NCache Client] Additions/sec: This counter is the measure of the number of add operations called by the cache client per second.
Note: Addition/sec will also be incremented in case of a new key being added with insert operation call.
- [NCache Client] Avg ms/event: This counter is the measure of average time spent to process a single event.
Note:Time is in milliseconds.
- [NCache Client] Deletes/sec:This counter is the measure of delete/remove operation requests called by a cache client per second.
- [NCache Client] Event Processed/sec: : This counter is the measure of the events executed by a cache client per second.
Note:This counter only exists in NCache 4.1 SP3
- [NCache Client] Event Triggered/sec: This counter is the measure of the number of events received by a cache client per second.
Note:Events received by a client are thrown by the cache server. This counter only exists in NCache 4.1 SP3.
- [NCache Client] Read Operations/sec: This counter is the measure of read operations called by a cache client per second.
Note:Here read operations are Get/Remove operations, also this counter is incremented irrespective of the success or failure of the operation.
- [NCache Client] Updates/sec: This counter is the measure of the insert operations called by a cache client per second.
Note:Update/Sec will not increment in case of a new key being added with insert operation call instead addition/sec will be incremented.
- [NCache Client] Write Operations/sec: This counter is the measure of the write operations called by a cache client per second.
Note:Here write operations are add/insert/remove/delete operation call.
NCache Server
- [NCache Server] Responses/sec: This counter is the measure of number of responses sent (that is, cache response for commands like add, get, insert, remove etc.) to all clients by a specific cache server.
- [NCache Server] Client Requests/sec: This counter is the measure of number of requests sent by all clients to the cache server.
- [NCache Server] Client Responses/sec: This counter is the measure of number of responses received by all clients from the cache server.
- [NCache Server] Client bytes sent/sec: This counter is the measure of this counter is the measure of bytes being sent from cache server to all its clients.
- [NCache Server] Client bytes received/sec: This counter is the measure of bytes being received by cache server from all its clients.
- [NCache Server] Socket send time (msec): This counter is the measure of time in milliseconds it took for the last message to be sent on over the socket.
- [NCache Server] Socket send size (bytes): This counter is the measure of amount of data sent in the last message.
- [NCache Server] NaglingMsgCount: This counter is the measure of time in milliseconds for which a sequenced message waits before it is processed.
- [NCache Server] Socket recv time (msec): This counter is the measure of time in milliseconds it took to receive the last message.
- [NCache Server] Socket recv size (bytes): This counter is the measure of how much data was received in the last message.
- [NCache Server] Response Queue Count: This counter is the measure of number of items in response queue.
- [NCache Server] Response Queue Size:This counter is the measure of size of response queue specified in bytes.
NCache Cluster
- [NCache Cluster] State transfer/sec: This counter is the measure of number of items this node is either reading from other nodes or sending to other nodes during a state transfer mode.
- [NCache Cluster] Mirror queue size: This counter is the measure of number of items in the 'Mirror Queue'.
Note:This value is only set in case of mirror topology.
- [NCache Cluster] Sliding Index queue size: This counter is the measure of number of items in the Sliding-Index queue.
Note: During replication in different topologies
Note: During replication in different topologies
- [NCache Cluster] Data balance/sec: This counter is the measure of number of items a particular node is either reading from other nodes or sending to other nodes during a Data Load Balancing mode.
- [NCache Cluster] Cluster ops/sec: This counter is the measure of number of clustered operations performed per second.
- [NCache Cluster] Clustered opssent/sec: This counter is the measure of number of clustered operations sent to other nodes in cluster per second.
- [NCache Cluster] Clustered opsrecv/sec: This counter is the measure of number of clustered operations received from other nodes in cluster per second.
- [NCache Cluster] Response sent/sec: This counter is the measure of number of responses sent to other nodes in cluster per second.
- [NCache Cluster] Bytes sent/sec: This counter is the measure of number of bytes sent per second to other nodes of the cluster.
- [NCache Cluster] Bytes received/sec: This counter is the measure of number of bytes received per second from other nodes of the cluster.
- [NCache Cluster] BcastQueueCount: This counter is the measure of number of items in Broadcast queue waiting to be processed on sequence.
- [NCache Cluster] McastQueueCount: This counter is the measure of number of items in multicast queue waiting to be processed on sequence.
Cache Specific
- [NCache Cache Specific] Event Queue Count: This counter is the measure of number of items in event queue.
Note: This counter only exists in NCache 4.1 SP3.
- [NCache Cache Specific] Readthru/sec: This counter is the measure of number of readthru operations per second.
- [NCache Cache Specific] Writethru/sec: This counter is the measure of number of writethru/writebehind operations per second.
- [NCache Cache Specific] General Notifications Queue Size: This counter is the measure of number of General Notification Events in the queue.
- [NCache Cache Specific] Count: This counter is the measure of number of items in the cache.
- [NCache Cache Specific] CacheLastAccessCount: This counter is the measure of number of items which are older than the access interval specified in the config file.
- [NCache Cache Specific] Average ms/cache operation: This counter is the measure of average time, in milliseconds, taken to complete one cache operation.
- [NCache Cache Specific] Expirations/sec: This counter is the measure of number of items being expired currently per second.
- [NCache Cache Specific] Hits/sec: This counter is the measure of number of successful fetch operations per second.
Note: Here fetch operations are Get or GetCacheItem operation calls
- [NCache Cache Specific] Misses/sec: This counter is the measure of number of failed fetch operations per second.
Note: Here fetch operations are Get or GetCacheItem operation calls.
- [NCache Cache Specific] Hits ratio/sec (%): This counter is the measure of ratio of 'number of successful Get operations per second' to 'total number of Get operations per second'.
What to Do Next?