Upgrading Couchbase .Net SDK from 2.1.4 to 2.5.0 degraded performance on OpenBucket

Hi,

I’m recently upgrade library from 2.1.4 to 2.5.0 and it seems to be 2x - 3x slower compare to the older version. All functionality is working like a charm but only on OpenBucket got severe impact cause our website warm up process.

Is any default configuration change can cause this problem? Bucket is on default port (SASL) and worked perfect!!!

1 Like

Hi @mahasak

So you’re seeing a slower bootstrap in 2.5.0 compared to 2.5.0.

Please can you share your Couchbase config, server version and maybe an example of where you’re doing the bootstrap? Ideally the bootstrap should happen during web app start-up, including opening a bucket for the first time, to ensure everything internal to the SDK is up and running before starting to service requests.

We upgraded couchbase .Net SDK from 2.1.2 to 2.5.1 and are seeing degraded performance on OpenBucket. With v2.1.2 the OpenBucket takes like 1 to 2 seconds and with v.2.5.1 OpenBucket takes like 7 or more seconds. I see some reference to smart clients to have more ports open, could that be the reason? https://developer.couchbase.com/documentation/server/3.x/admin/Install/install-networkPorts.html

Couchbase Server Version: 4.6.1-3652 Enterprise Edition (build-3652)

Couchbase config
couchbaseClients
couchbase
servers
add uri=“http://somecouchserver:8091” /
/servers
buckets
add name=“bucket1” password=“bucket1_password” useSsl="false"
connectionPool name=“custom” maxSize=“10” minSize=“5” waitTimeout=“5000” shutdownTimeout=“3000”
/connectionPool
/add
/buckets
/couchbase
/couchbaseClients

Hi @kdamarla.chamberlain -

When the SDK bootstraps, it first tries to connect via CCCP using a binary protocol, if it cannot bootstrap it will switch over to HTTP Streaming. Memcached buckets always go through this process because they do not support CCCP and fallback to HTTP streaming; Couchbase buckets should connect quickly via CCCP.

Note that buckets should be opened on the main application thread when the app starts up and closed/disposed when the app shuts down. Using the ClusterHelper class can help manage the object lifetime by caching the bucket for the duration of the apps lifetime.

Can you enable logging and post the portion where the client bootstraps? Also, try upgrading to 2.5.2 to see if there is any difference; a lot of patches went into 2.5.2 regarding authentication and possible that this resolves the issue for you. Let us know if it helps.

-Jeff