Improve database read and write performance using 2 couch_files
---------------------------------------------------------------

                 Key: COUCHDB-976
                 URL: https://issues.apache.org/jira/browse/COUCHDB-976
             Project: CouchDB
          Issue Type: Improvement
            Reporter: Filipe Manana
            Assignee: Filipe Manana


Right now we use a single couch_file server for both updating a database and 
reading from a database.
This is a contention point, as concurrent read/write access to a database 
implies having processes waiting for access to the couch_file server.

The following patches add a couch_file server that is used only by the DB 
updater process and another couch_file meant to be used by anyone else only for 
read operations:

https://github.com/fdmanana/couchdb/compare/updater_dedicated_fd

Some performance measurements:

# updater_fd vs trunk  (small docs, 1Kb each)

$ node tests/compare_write_and_read.js --wclients 50 --rclients 200 \
  -name1 updater_fd_small_docs -name2 trunk \
  -url1 http://localhost:5984/ -url2 http://localhost:5985/ \
  --duration 300

http://graphs.mikeal.couchone.com/#/graph/5c859b3e7d1b9bd0488cfe271104a616


# updater_fd vs trunk  (large docs, 100Kb each)

$ node tests/compare_write_and_read.js --wclients 50 --rclients 200 \
  -name1 updater_fd_large_docs -name2 trunk \
  -url1 http://localhost:5984/ -url2 http://localhost:5985/ \
  --duration 300 --doc large

http://graphs.mikeal.couchone.com/#/graph/5c859b3e7d1b9bd0488cfe271104a7a7


We can see that both the response time and throughput gets significantly better 
for both read and writes.

If no objections I'll commit it to trunk.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to