Couchbase
  • Why NoSQL?
  • Couchbase Server
  • Download
  • Resources
  • Careers
Home | Forums | Membase | Membase Server 1.6.x

Performance optimisation

6 replies [Last post]
  • Login or register to post comments
Wed, 12/01/2010 - 02:23
Leo
Offline
Joined: 12/01/2010
Groups: None

Hello,

We are currently developping a real-time application that requires a simple and fast no-SQL database, such as Membase.
Our needs are simple : we have to store about 8 to 15 million binary records, ranging from 300 bytes to 30K bytes, with an average of 1K by record. We have enough RAM to store all the data in memory.Our records are persistent, and never expire.

Our developer team made a Proof Of Concept with Membase, that gave some interresting results. It's clear that Membase is esay to install, administrate and monitor. However, compared to other memcache-like solutions, such as memcachedb, Membase seems to be a little bit slower.

Each time our app takes care of a record, it basically does one get() and one set(). Initially, we had around 1700 operations / second on a 3 GHz Quad-Xeon with 4Mb cache. After a long-term running (and around 1M records in database), we come to roughly 800 operations/second. We could have sligthly better performance with memcachedb, and we would like to encounter the same performance with membase.

We would like to know more about membase optimisation. Is there a way to change some core parameters in Membase, such as thread number, or database type (btree / hash) ? Do you have some advices to speed up our number of ops / second ?

Thank you in advance for your help and answers,

Leo.

Top
  • Login or register to post comments
Wed, 12/01/2010 - 05:06
alkondratenko
alkondratenko's picture
Offline
Joined: 12/01/2010
Groups: None

800 ops/second seems too slow. My cheap laptop easily beats that serving around 5k ops/sec with single threaded load from memcachetest. And it gives 30k with higher number of connections.

What's your OS and client details ?

Top
  • Login or register to post comments
Wed, 12/01/2010 - 07:35
Leo
Offline
Joined: 12/01/2010
Groups: None

Hello,

I'm not doing pure benchmarking, our app does a certain number of things between a get() and a set() operation. This may be why your laptop wins against my Quad Xeon :) By the way, to speed up operations and use correclty all the processors, our app is multithreaded.

My initial problem is that I get better results with memcachedb than with membase (approx 1,6x faster), and I'm trying to find ways to improve membase performance with my app.

We run our application on an Ubuntu Server 64 bits edition.

Top
  • Login or register to post comments
Wed, 12/01/2010 - 07:49
alkondratenko
alkondratenko's picture
Offline
Joined: 12/01/2010
Groups: None

This is still weird. If we assume that your xeon is at least as fast as my laptop we get that around 1/7th of time is spent waiting for membase requests. If you speed up that part infinitely that would be smaller total speedup than 1.6x.

I suggest you to check that membase is not hitting disk on reads. membase admin UI has some useful stats that might shed light on your situation.

 

Top
  • Login or register to post comments
Wed, 12/01/2010 - 08:12
Leo
Offline
Joined: 12/01/2010
Groups: None

I have about 1 to 6M records, that gets constantly updated - record size can grow or srink, etc... This may be why membase operations are slower on my case than on yours...

To answer your question, membase is never hitting disk on reads, and is using about 1/4th of available RAM.

I could also observe that the number of operations / second get diminishing with the increasing number of records, like if a B+Tree was used. Is it the case ? IS it possible to use a hash instead ?

 

Top
  • Login or register to post comments
Wed, 12/01/2010 - 08:17
alkondratenko
alkondratenko's picture
Offline
Joined: 12/01/2010
Groups: None

 Membase uses hash table for in-memory key/value pairs.

Do I understand correctly that your setup is single-node? What portion of CPU is used by each process ? In particular I'm interested in moxi versus memcached CPU utilization.

Top
  • Login or register to post comments
Wed, 12/01/2010 - 12:07
bhawana@membase
Offline
Joined: 10/29/2010
Groups: None

I would like to understand your setup. How many nodes do you have? How much memory on each? How much you have allocated to Membase? What client are you using?

Can you please run the following command and paste the output here:

"/opt/membase/bin/ep_engine/management/stats <IP>:11210 all | egrep "todo|ep_queue_size|_eject|mem_|max_data"

 

What version of membase are you using?

run the following and send the zipped output :

/opt/membase/bin/ns_server/collect_info (1.6.0)

/opt/membase/1.6.1rc2/bin/ns_server/collect_info (1.6.1 and above)

 Also, as alkondratenko wrote - watch out for CPU utilization and let us know.

Thanks

Bhawana

__________________

Forum support is great for free but sometimes you need a guaranteed response time and dedicated resources for your questions or issues.
Consider purchasing enterprise-level support from Membase: http://www.membase.com/products-and-services/overview
Call or email "sales -at- membase -dot- com" today!

Top
  • Login or register to post comments
  • Login or register to post comments
  • Login
  • Register

Company

  • About Us
  • Leadership
  • Customers
  • Partners
  • Contact Us

Product

  • Couchbase Server
  • Couchbase SDKs
  • Use Cases
  • Documentation
  • Forums

Open Source

  • Couchbase Project
  • Couchbase vs. CouchDB

Commercial

  • Subscriptions & Support
  • Training & Services

News

  • Blog
  • Newsletter
  • Press Releases
  • Buzz

Follow Us

    
  • Customer Login
  • Terms of Service
  • Privacy Policy
  • Trademark Policy
  • Site Map

© 2013 COUCHBASE All rights reserved.

Sign in to Couchbase Community

close
  • Create new account
  • Request new password
You are logging into the Forums, Wiki and Issue Tracker