Client keep-alive

The client keep-alive feature enables multiple clients requests to be sent on a single connection. This feature benefits transaction management. In this environment the web server closes the client connection after serving the response and the client opens a new connection spends more time on the transaction.

Client keep-alive keeps the connection between the client and the appliance (client-side connection) open even after the server closes the connection with the appliance. The feature allows multiple clients requests using a single connection and saves 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 server does not support client keep-alive.
  • If server supports but an application on the server does not support 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 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. The result is 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 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

    Note:

    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
    

Note:

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