Some configurations about WCF HTTP polling duplex channels

Published on Wednesday, November 10, 2010

Mr. Tomasz Janczuk has lots of blog posts about WCF http polling duplex service.

The following is part of his blog : Performance of HTTP polling duplex server-side channel in Microsoft Silverlight 3

<serviceThrottling maxConcurrentSessions="2147483647"/>

... The number of session channels that a WCF service can support concurrently is throttled using ServiceThrottlingBehavior.MaxConcurrentSessions service behavior. ...

...

There are several customizations that were introduced in the settings of the PollingDuplexBindingElement for the purposes of this performance measurements:

<binding name="PubSub">
    <binaryMessageEncoding/>
    <pollingDuplex maxPendingSessions="2147483647"
                 maxPendingMessagesPerSession="2147483647"
                 inactivityTimeout="02:00:00"
                 serverPollTimeout="00:05:00"/>
    <httpTransport/>
</binding>

The value of inactivityTimeout controls the maximum time without any activity on the channel before the channel is faulted. The value has been set to 2 hours to avoid a situation when a channel is faulted due to infrequent message exchanges in a test variation. ...

The value of serverPollTimeout controls the maximum time the server will hold onto client’s long poll HTTP request before responding. If that time has elapsed without the server having an application message to push back to the client, the server will send back an empty HTTP OK response (causing the client to re-issue a new long poll). ...

The value of maxPendingSessions throttles the number of new sessions that wait to be accepted on the server. This situation can occur when the speed at which new sessions are established at the server (new clients connect) exceeds the server’s ability to accept them. This value has been increased to Int32.MaxValue from the default of 4 to allow for the client connection pattern implemented in our performance code, where all the clients attempt to connect at once at the beginning of the test. In a typical production scenario, new client connections are spread more evenly in time, in which case the default value of 4 should be adequate.

The value of the maxPendingMessagesPerSession throttles the number of new messages from a client (sent over a particular session) that wait to be accepted by the server. ...… In a typical production scenario, messages from the client can be expected to be spread more evenly in time, in which case the default value of 8 should be appropriate.

...