Client keep-alive

The client keep-alive feature enables multiple clients requests to be sent on a single connection. This feature benefits transaction management. When the Client Keep-Alive mode is enabled on an appliance and the server response to the client request contains the Connection: close the HTTP header and performs the following tasks:

  • Renames the existing Connection header name by shuffling the characters in the header name.

  • Adds a new Connection: header with Keep-Alive as the value for the header.

The Client Keep-Alive mode enables the Citrix ADC appliance to process multiple requests and responses using the same socket connection. The feature keeps the connection between the client and the appliance (client-side connection) open even after the server closes the connection with the appliance. This allows multiple clients requests using a single connection and saves the round trips associated in opening and closing a connection. Client keep-alive is most beneficial in SSL sessions.

Client keep-alive is useful for the following scenarios:

  • If the server does not support the client keep-alive.
  • If the server supports but an application on the server does not support the client keep-alive.

Note: Client keep-alive is applicable for HTTP and SSL traffic. Client-keep alive can be configured globally to handle all traffic. Also, you can activate it on specific services.

In the client keep-alive environment, the configured services intercept the client traffic and the client request is directed to the origin server. The server sends the response and closes the connection between the server and the appliance. If a “Connection: Close” header is present in the server response, the appliance corrupts this header in the client-side response, and the client-side connection is kept open. As a result, the client does not have to open a new connection for the next request. Instead, the connection to the server is reopened.

Note: If a server sends back two “Connection: Close” headers, only one is edited. This results in significant delays on the client rendering of the object because a client does not assume that the object has been delivered completely until the connection is closed.

Configure client keep-alive

Client keep-alive, by default, is disabled on the Citrix ADC, both globally and at service level. Therefore, you must enable the feature at the required scope.

Note: If you enable the client keep-alive globally, it is enabled for all services, regardless of whether you enable it at the service level. Also, you must configure some HTTP parameters to specify the following:

  • the maximum number of HTTP connections retained in the connection reuse pool.

  • enable connection multiplexing, and enable persistence Etag.

Note: When Persistent ETag is enabled, the ETag header includes information about the server that served the content. This ensures that cache validation conditional requests or browser requests, for that content, always reaches the same server.

Configure client keep-alive by using Citrix ADC command interface

At the command prompt, do the following:

  1. Enable client keep-alive on the Citrix ADC.

    • At global level - enable ns mode cka
    • At service level - set service <name> -CKA YES


    Client keep-alive can be enabled only for HTTP and SSL services.

  2. Configure HTTP parameters on the HTTP profile that is bound to one or more services.

    set ns httpProfile <name> -maxReusePool <value> -conMultiplex ENABLED -persistentETag ENABLED


Configure these parameters on the nshttp_default _profile HTTP profile, to make them available globally.

Configure client keep-alive by using Citrix ADC GUI

  1. Enable client keep-alive on the Citrix ADC.

    • At global level

      Navigate to System > Settings, click Configure Modes and select Client side Keep Alive.

      Configure Client keep-alive

    • At service level

      Navigate to Traffic Management > Load Balancing > Services, and select the required service. In the Settings section, select Client Keep-Alive check box.

      Configure Client keep-alive

  2. Configure the required HTTP parameters on the HTTP profile that is bound to one or more services.

  3. Navigate to System > Profiles, and on HTTP Profiles tab, select the required profile and update the required HTTP parameters.

Client keep-alive