How to troubleshoot client Queue Timeout errors


#1

Occasionally we are seeing multiple concurrent reads from a single client machine fail at the same time with a “Queue Timeout - IP” error in the result.Value.Message when calling ExecuteGet, my question is how can I begin troubleshooting this error to figure out what is causing it? No timeouts are specified so everything is the default values, this is connecting to an internal cluster on dedicated hardware on Version: 3.0.2-1603 Enterprise Edition, CouchbaseNetClient 1.3.9

This is the c# code that is calling ExecuteGet on a collection of keys and then iterating over the results

// Query data from couchbase
var results = _client.ExecuteGet(_queryKeysToDataPoints.Keys);

Parallel.ForEach(results, result => {
	if (result.Value.StatusCode == 1) // key not found
		return;
	if (!result.Value.Success)
		throw new ApplicationException("Failed to retrieve key: " + result.Value.Message);

This is what comes out of the result.Value.Message

Are there any other properties from result.Value that would give more information?


#2

@brandonagr -

QueueTimeout’s occur when a thread is waiting for connection the wait exceeds the time limit. The default is 2.5s, which can be changed through the SocketPoolConfiguration.QueueTimeout or via the config: http://docs.couchbase.com/couchbase-sdk-net-1.3/#configuring-the-net-client-library

You could either increase that value or bump up the number of connections the client is using; min is 5/max is 10 by default.

To get a better understanding of why it is happening, you can enable logging for a short period of time and then analyze the logs: http://docs.couchbase.com/couchbase-sdk-net-1.3/#configuring-logging

Try the Exception field.

-Jeff