Reducing Azure Queue Latency

I used Azure Queues for a project at work recently. One common suggestion is to turn off Nagle’s algorithm which coalesces small messages into larger messages. While Nagle’s algorithm can help improve network congestion, it can add significant latency when all your messages are small which tends to be the case with Azure Queue requests. The way you turn off Nagle’s algorithm is:

CloudStorageAccount account = CloudStorageAccount.Parse(connectionString);
 ServicePoint queueServicePoint = ServicePointManager.FindServicePoint(account.QueueEndpoint);
 queueServicePoint.UseNagleAlgorithm = false;

Another change, which I have not seen suggested anywhere, is to increase the ServicePoint.MaxIdleTime. This controls how long a connection can be idle before it is closed. If the time between requests exceeds the MaxIdleTime (i.e. the request rate is low), every request will need to establish a new connection which is usually over SSL. Creating a new SSL connection is an expensive operation that involves at least two round trips. By increasing the MaxIdleTime, you can re-use connections more often and avoid redoing the SSL handshake.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s