• Products
  • Solutions
  • Customers
  • Resources
  • Company
  • Pricing
  • Download
Try Playground
  • Cache Settings
  • Communication Reliability
Show / Hide Table of Contents
  • Administrator's Guide
  • NCache Architecture
    • Cache Topologies
      • Partitioned Topologies
      • Replicated Topology
      • Mirrored Topology
      • Scalability in Topologies
    • Dynamic Clustering
    • Local Cache
    • Cache Client
    • Client Cache
    • Bridge for WAN Replication
    • Connectivity with Load Balancer
    • Serialization Format
    • Data Encryption
    • Data Compression
    • Data Load Balancing
    • Pipelining
    • Cache Server Backward Compatibility
    • Client Backward Compatibility
    • Eviction
    • Indexing
    • Split-Brain
    • Maintenance Mode
    • Runtime Data Sharing
    • Portable Data Types
    • Class Versioning
    • IP Binding with Multiple NICs
    • Graceful Node Down
    • Separate Cache Host Process
    • Self Healing Dynamic Clustering
    • Distributed Cache with Persistence
  • NCache Management Center
  • Configure Caches
    • Create a Cache
      • Local Cache Overview
        • Local Cache
        • Local Cache with Persistence
        • Pub/Sub Messaging Cache
        • Add Existing Cache
      • Clustered Cache Overview
        • Distributed Cache
        • Persistent Distributed Cache
        • Pub/Sub Messaging Cache
        • Add Existing Clustered Cache
        • Troubleshooting
    • Remove Cache
    • Clear Cache
    • Add Server Node
    • Remove Server Node
    • Add Test Data
    • Configure Query Indexes
    • Configure JSON Query Indexes
    • Compact Serialization
      • Non-Generic Registration
      • Non-Generic Unregistration
      • Generic Registration
      • Using Type Handler
    • Deploy Providers
    • Configure Custom Dependency
    • Add Data Source Providers
      • Read-Through Provider
      • Write-Through Provider
      • Write-Behind Provider
    • Loader and Refresher
    • Configure Maintenance Mode
      • Stop for Maintenance Mode
      • Exit Maintenance Mode
    • Configure LINQPad
      • Configure LinqPad for NCache
      • Querying Data in LinqPad
  • Configure Clients
    • Add Client Node
    • Remove Client Node
  • Configure Client Cache
    • Create Client Cache
    • Create Client Cache with NuGet
    • Enable Client Cache on Client Nodes
    • Disable Client Cache on Client Nodes
    • Remove Client Cache
  • Management Operations
    • Start Cache
    • Stop Cache
    • Restart Cache
    • Manage Cache Service on a Server Node
    • Memory Dumps
    • Data Load Balancing
    • Invoke Refresher Dataset
    • Import/Export Cache Data
    • Import Lucene Indexes
    • Suspend/Resume NCache Data Persistence
    • Backup and Restore NCache Persisted Data
  • Cache Settings
    • General Cache Settings
      • Cache Size
      • Cache Isolation Levels
      • Cache Serialization Format
      • Cache Data Expiration
    • Cache Cluster Settings
      • Ports
      • Operation Timeout
      • Configure Pipelining
      • Static Replication Interval
      • Connection Retries
      • Retry Interval
      • Split-Brain Auto Recovery
    • NCache Persistence Settings
      • Store Information
      • Persistence Interval
    • Error Logging
    • Cache Level Events
    • Client Activity Events
    • Eviction Policy
    • MapReduce
    • Register Classes for Portable Data Sharing
    • Compression
    • Email Notifications
    • Bind IP with Multiple NICs
      • Bind Cluster with a Dedicated IP
      • Bind Client/Server with a Dedicated IP
    • Heartbeat
    • Keep Alive
    • Client Death Detection
    • Communication Reliability
    • Auto Start Cache on Boot
    • Nagle's Algorithm
    • Dual Socket
    • Configuration Files
      • Client Side Configurations
        • Client Config
        • EFCaching Config
      • Server Side Configurations
        • Cache Config
        • Bridge Config
        • Modules Config
        • Security Config
        • TLS Config
        • Monitoring Config
        • Emails Template
  • Cache Server Settings
    • Server Connectivity
    • Bind to Multiple NICs
    • Server Ports
    • Memory
    • Custom Dependency
    • Request Inquiry
    • Windows Events
    • Message Events
    • Expiration & Eviction
    • SQL Server
    • Logging
    • Monitoring
    • Persistence Data Loading Retries
    • Miscellaneous Configurations
  • Bridge Server Settings
  • Cache Client Settings
  • Client Cache Settings
  • Configure Security
    • Configure Authentication and Authorization
    • Configure Encryption for Cache
    • Configure TLS Encryption
    • Configure HTTPS for NCache Management Center
  • Configure Bridge for WAN Replication
    • Create Bridge
    • Add Clustered Caches to Bridge
    • Configure Bridge Settings
    • Change Cache Synchronization Modes
    • Bridge Management
    • Synchronize Caches in Bridge
    • Leave Bridge
    • Remove Cache from Bridge
    • Configure Conflict Resolver
  • Setup Database for Cache Synchronization
    • Setup SQL Server Environment
    • Setup Oracle Database Environment
    • Setup OleDb Environment
    • Setup SQL Server for CLR Procedures
  • Simulate NCache Usage
  • Monitor Caches
    • Counters
      • Distributed Cache Counters
      • Distributed Cache with Persistence Counters
      • Pub/Sub Messaging Cache Counters
      • Distributed Lucene Cache Counters
      • Cache Client Counters
      • Bridge Counters
    • Monitor NCache using the NCache Management Center
      • Using Tabular Statistics
        • Configure Counters to Display Caching Statistics
        • Configure Counters to Display Pub/Sub Statistics
        • Configure Counters to Display Lucene Statistics
        • Configure Counters to Display Bridge Statistics
        • Browse Cache Statistics
        • Monitor Bridge
      • Using Monitoring Dashboards
        • Configure Monitor Settings
        • Configure Event Logging
        • Configure API Logging
        • Monitor with a Built-In NCache Monitor Dashboard
        • Monitor with the NCache Monitor Custom Dashboard
        • Monitor Cluster Connectivity
        • Monitor Cache Clusters using NCache Email Alerts
    • Monitor Cache Using Command Line Tools
      • Monitor Cache Server Statistics with Command Line Tools
      • Monitor Cache Client Statistics with Command Line Tools
    • Monitor NCache Using Windows PerfMon Tool
      • Monitoring Cache Server Counters using PerfMon
      • Monitoring Cache Client Counters using PerfMon
      • Monitor Bridge Counters Using PerfMon Tool
    • Monitor NCache using Prometheus
    • Monitor NCache using Grafana
    • Monitor NCache Using SNMP Counters
    • Monitor NCache Using JMX Counters
    • Logging
      • NCache Log Viewer
      • Performance Counters Logging
      • Windows Event Logging
      • Cache Health Alerts
      • Email Notifications on NCache Events
      • Cache Server Logging
      • Client Side API Logging
      • Cache Event IDs
      • Feature Usage Logging
    • Troubleshooting NCache Monitoring
      • Computer Name Not Found
      • Diskperf Not Installed
      • No READ Access to Perflib Subkeys
      • Unable to Connect to Remote Server
    • IPV6 Support

Communication Reliability for Cluster Connectivity

NCache provides communication reliability through the Command Retry and Request Inquiry features for cluster connectivity and to ensure the communication and execution of any commands that may not have been performed due to a network or firewall issue.

These features rely on the rule that certain commands change the state of the cache, like write operations (Add/Insert/Remove). These commands are referred to as unsafe commands, and once performed, they cannot be performed again - unless specified. On the other hand, we have commands that can be safely performed on the cache repeatedly, without changing the state of the cache, like read operations (Get commands). These are referred to as safe commands. The command retries work for safe commands, whereas the request inquiry works for unsafe commands.

Command Retries for Cluster Connectivity

Command retries, as the name indicates, retry the execution of a command once the connection between the client and the cache server is broken, which can result from one of the following scenarios:

  • The request containing the command was being sent when the connection broke, and the request never reached the server.

  • The request containing the command was successfully sent to the server but there is uncertainty about whether the request was entertained or not when the connection broke.

Hence, if it is certain that the connection was broken before the request was sent to the server, the command is retried as the request is resent to the server.

In case of uncertainty, the command’s status is checked to whether it is safe or unsafe.

  • If the command is safe, the command is simply retried.

  • If it is unsafe, an inquiry is made to another server node in the cache cluster to check the status of the request. Action is then taken according to the response from the request inquiry which returns the state of the request to the server. Request Inquiry is explained further in the chapter.

The user can configure how many retries should be made for each command and the time interval between them in seconds.

Command retries and their interval can be enabled through the <ncache-server> tag in client.ncconf in %NCHOME%\config (Windows) or \opt\ncache\config (Linux). By default, the command retries are set to 3, and the interval to 0.1 seconds.

<ncache-server ... command-retries="3" command-retry-interval="0.1" ... />

Request Inquiry for Cluster Connectivity

Request Inquiry logs all the client requests containing unsafe commands on the server side on the receiving node. This is used to ensure fault tolerant and reliable communication between the client and cluster. In case of a connection break, a client can inquire about the status of an unsafe command from the cluster. The status of the failed requests can be either of the following:

Response from Request Inquiry Action Taken
Request not received by server node. Command Retry.
Request received but not yet processed. Wait for the request to be processed and inquire again.
Request processed. Send the response of the completed request in response to the inquiry.

If request inquiry is disabled and an unsafe command fails, an exception is thrown asking the user to enable the feature, if any future unsafe commands are to be made reliable. By default, the request inquiry is disabled.

Request inquiry is a node specific setting and can be enabled through the following property in the cache server configuration file located at the following location:

  • .NET: Alachisoft.NCache.Service.exe.config located in %NCHOME%\bin\service.
  • .NET Core Windows: Alachisoft.NCache.Service.dll.config located in %NCHOME%\bin\service.
  • .NET Core Linux: Alachisoft.NCache.Daemon.dll.config located in /opt/ncache/bin/service.
  • Java Windows: Alachisoft.NCache.Service.dll.config located in %NCHOME%\bin\service.
  • Java Linux: Alachisoft.NCache.Daemon.dll.config located in /opt/ncache/bin/service.
<add key="NCacheServer.EnableRequestInquiry" value="False"/>

The requests containing the unsafe commands remain logged on the server side until they are acknowledged by the client. The client piggybacks the identifier of the acknowledged request on the next request. Upon reception of the acknowledgment, the server clears the request logs preceding the acknowledgment. However, there can occur situations where the request log isn't cleared. Here, each log has a natural expiration time which can be modified through the following property:

  • .NET: Alachisoft.NCache.Service.exe.config located in %NCHOME%\bin\service.
  • .NET Core Windows: Alachisoft.NCache.Service.dll.config located in %NCHOME%\bin\service.
  • .NET Core Linux: Alachisoft.NCache.Daemon.dll.config located in /opt/ncache/bin/service.
  • Java Windows: Alachisoft.NCache.Service.dll.config located in %NCHOME%\bin\service.
  • Java Linux: Alachisoft.NCache.Daemon.dll.config located in /opt/ncache/bin/service.
<add key="NCacheServer.RequestInquiryCleanInterval" value="15"/>

See Also

Heartbeat
Bind Cluster and Client/Server IP with Multiple NICs
Auto Start Cache on Boot
Nagle's Algorithm

In This Article
  • Command Retries for Cluster Connectivity
  • Request Inquiry for Cluster Connectivity
  • See Also

Contact Us

PHONE

+1 (214) 764-6933   (US)

+44 20 7993 8327   (UK)

 
EMAIL

sales@alachisoft.com

support@alachisoft.com

NCache
  • NCache Enterprise
  • NCache Professional
  • Edition Comparison
  • NCache Architecture
  • Benchmarks
Download
Pricing
Try Playground

Deployments
  • Cloud (SaaS & Software)
  • On-Premises
  • Kubernetes
  • Docker
Technical Use Cases
  • ASP.NET Sessions
  • ASP.NET Core Sessions
  • Pub/Sub Messaging
  • Real-Time ASP.NET SignalR
  • Internet of Things (IoT)
  • NoSQL Database
  • Stream Processing
  • Microservices
Resources
  • Magazine Articles
  • Third-Party Articles
  • Articles
  • Videos
  • Whitepapers
  • Shows
  • Talks
  • Blogs
  • Docs
Customer Case Studies
  • Testimonials
  • Customers
Support
  • Schedule a Demo
  • Forum (Google Groups)
  • Tips
Company
  • Leadership
  • Partners
  • News
  • Events
  • Careers
Contact Us

  • EnglishChinese (Simplified)FrenchGermanItalianJapaneseKoreanPortugueseSpanish

  • Contact Us
  •  
  • Sitemap
  •  
  • Terms of Use
  •  
  • Privacy Policy
© Copyright Alachisoft 2002 - 2025. All rights reserved. NCache is a registered trademark of Diyatech Corp.
Back to top