WCF Keep Alive: Whether to disable keepAliveEnabled

netwcf

I have a WCF web service hosted in a load balanced environment. I do not need any WCF session related functionality in the service.

QUESTION

What are the scenarios in which performances will be best if

  1. keepAliveEnabled = false

  2. keepAliveEnabled = true

Reference

From Load Balancing

By default, the BasicHttpBinding sends a connection HTTP header in messages with a Keep-Alive value, which enables clients to establish persistent connections to the services that support them. This configuration offers enhanced throughput because previously established connections can be reused to send subsequent messages to the same server. However, connection reuse may cause clients to become strongly associated to a specific server within the load-balanced farm, which reduces the effectiveness of round-robin load balancing. If this behavior is undesirable, HTTP Keep-Alive can be disabled on the server using the KeepAliveEnabled property with a CustomBinding or user-defined Binding.

Best Answer

Because you asked about performance:

keepAliveEnabled = false

For best performance, if your average latency is low, use this (though it probably won't make a huge difference).

keepAliveEnabled = true

For best performance, if your average latency is high, use this.