Every so often, users looking to run Couchbase Server in production will ask about Couchbase Server performance as well as results of response time and throughput for typical workloads. Recently Cisco and Solarflare published a whitepaper presenting the results of a benchmark they executed in the Cisco Labs using Couchbase Server as the NoSQL database. While the benchmark was designed specifically to demonstrate the benefits of 10Gig Ethernet as well as kernel level optimizations, it also demonstrates some key Couchbase Server strengths that our customers have come to love and rely on for their production deployments. This blog highlights some additional details and insights gained from that benchmarking exercise.
The benchmark ran two sets of tests, both with a mixed workload with 70% reads and 30% writes. In the first test, the size of the document stored varied from 128 bytes to 16KB and the average latency across read and write operations was measured end to end (client to database server and back) for different networking setups.
Chart 1 below shows the results and demonstrates that Couchbase Server is ridiculously fast with microsecond responses even on a 1Gig Ethernet and document size of 16KB. Latency was less than 200 μsec using a 10Gig Ethernet for documents of all sizes and less than 500 μsec for all cases. But more importantly, it demonstrates consistent and predictable latency (Flat latency graph on 10GigE while larger documents take slightly more time to transfer on a 1GigE network). This key aspect plays an important role in the user experience of web applications.
In the second test, the average throughput was measured as nodes were added to the Couchbase cluster, from 1 node to 5 nodes.
In Chart 2 above, you can see that even with just 4 nodes, throughput is nearly 1.15 million operations per second. About 1.4 GB per second of data is actually being transferred between the database server and client. High write throughput is seen even with significant sized 1KB documents. While high throughput may be a requirement for some applications, this test also showed linear throughput as more servers are added to the cluster: 0.62 million ops / sec with 2 nodes and 1.15 million ops / sec with 4 nodes.
You may wonder how this level of database performance is achievable. At the heart of it is the Couchbase Server architecture and design:
- A shared nothing architecture where all nodes are identical and independent enables linear scalability
- Keys are auto-sharded across the cluster and evenly distributed whether the cluster has 1 node or 8 nodes.
- Low granularity of Couchbase locks and minimal contention enabling high write throughput
- Reads happen independent of writes and concurrently, enabling high read throughput independent of the number of writes
- Built-in managed caching tier enables consistent low latency responses
I’ve included some additional details below on the Couchbase Server configuration for the benchmark. I hope you found this blog helpful, and I encourage you to download Couchbase Server to see if it’s a good fit for your web application.
Here are some additional details on the benchmark setup:
Eight nodes running Couchbase Server 1.8.0 were used as NoSQL database servers, and one node was used to run the tests. Couchbase Server was configured with one replica. One server was used as the client to run the workload. The workload generator used for the test was mcsoda open sourced streaming load generator with a mix of GET and SET operations in the 70:30 ratio.
More information about the workload generator can be found here.