RIA Streaming Architectures and Nagle

In my view we are on the 3d revision of what I call streaming architectures. The evolution has primarily come about due to the improvements in streaming servers coupled with some new product entries.

  • The first generation architectures used streaming servers to only push data to the RIA (Rich Internet Application) – Silverlight/Flex/Ajax. Request/responses where handled by web servers.
  • Second generation move the application logic from the web servers into processes listening to a message bus. The web server simply validated the incoming request/response and threw the request on the message bus, with the response coming via the streaming server. Obviously there needs to be a GUID or similar in the payload to marry request and async responses.
  • Third generation architectures have almost done aways with the web servers since the streaming servers provide appropriate channel/queue technology to facilitate request/response communication. Web servers are mostly providing a location to allow users to download the RIA, coupled with initial authentication to the “portal” to gain access to the download.

Obviously each of the above has pros/cons and is impacted by the streaming server you choose to a certain degree.

So what is Nagle? The Nagle algorithm offers “a means of improving the efficiency of TCP/IP networks by reducing the number of packets that need to be sent over the network”. From a streaming server perspective, its clear we probably want to disable Nagle on the server to allow better optimisation of push packet data to the RIA.

~ by mdavey on March 31, 2010.

One Response to “RIA Streaming Architectures and Nagle”

  1. Nagle’s algorithm is a TCP congestion control mechanism (http://tools.ietf.org/html/rfc896) that improves the TCP throughput with virtually no impact on latency. It is implemented in the kernel of all the modern operation systems, being an established method.

    Disabling Nagle’s algorithm (TCP_NODELAY) can improve slightly the responsiveness of real-time applications in certain special conditions (usual improvements are of the order of 1% to 5%). However, disabling this algorithm has as a side-effect worsting the throughput and increasing the congestion. Moreover, on slow networks or with slow clients the negative impact is even greater, reducing the server performance in general – including latency degradation.

    It is recommended not to disable Nagle’s algorithm unless you really know what you doing.

    We at Migratory Data Systems have conducted performance tests for Migratory Push Server (a real-time HTTP streaming server) and it was confirmed that disabling Nagle’s algorithm has no significant impact on latency. You can see the latency results obtained at


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: