`
CharlesCui
  • 浏览: 427400 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Couchdb 性能测试 之 查询数据

阅读更多
Couchdb:

引用
Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API. Among other features, it provides robust, incremental replication with bi-directional conflict detection and resolution, and is queryable and indexable using a table-oriented view engine with JavaScript acting as the default view definition language.



Couchdb是以Rest方式来完成操作的分布式文档数据库,要多Couchdb完成操作的话,必须通过执行Http请求。传统数据库是通过DBAdapter完成消息传递的,那么可以认为:Http请求的效率和传统的DBAdapter请求的效率,在一定程度上影响着Couchdb和传统数据库的性能。

在Couchdb中,拿插入数据来说,每次插一条数据,客户端必须发起一次put请求,Couchdb再接受这个请求并作处理。下面我就要做这样的一次测试,来比较Couchdb和Mysql两种数据库的插入数据的速度。插mysql和couchdb的操作都从客户端发起,mysql和couchdb同时装在一台server上。通过benchmark记录操作耗时。

测试环境:一台server,一台client,

server:DELL1950划分的一台虚拟机,cpu:2,mem:2GB
mysql:Server version: 5.0.67-0ubuntu6 (Ubuntu)
couchdb:Apache CouchDB 0.8.0-incubating (LogLevel=info)
文件系统:

Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda1     ext3     85G  1.5G   80G   2% /
tmpfs        tmpfs   1013M     0 1013M   0% /lib/init/rw
varrun       tmpfs   1013M  356K 1012M   1% /var/run
varlock      tmpfs   1013M     0 1013M   0% /var/lock
udev         tmpfs   1013M  2.6M 1010M   1% /dev
tmpfs        tmpfs   1013M     0 1013M   0% /dev/shm

client:一台装有LoadRunner的服务器来模拟多个并发请求。

测试场景:
1、服务端:数据库状况为:{"db_name":"couchdbvsmysql","doc_count":1000,"doc_del_count":0,"update_seq":1000,"compact_running":false,"disk_size":2376834}
客户端:通过LoadRunner发送大量请求,并发设置为50,没有时间间隔,再此情况下查看couchdb的响应速度(TPS),并监控couchdb服务器的CPU和Load等其它性能数据。
2、客户端并发设置为500,其它与场景一相同。

场景一测试结果:

TPS:571,CPU:83%(其中SI和HI较高,分别为20%多和10%多),LOAD:2.1,

top 写道
top - 21:25:20 up 8 days, 23:21,  3 users,  load average: 1.95, 1.63, 1.26
Tasks: 104 total,   1 running, 102 sleeping,   1 stopped,   0 zombie
Cpu(s): 28.6%us, 28.2%sy,  0.0%ni, 12.5%id,  0.0%wa,  7.3%hi, 23.4%si,  0.0%st
Mem:   2072680k total,   831620k used,  1241060k free,   170248k buffers
Swap:  3879656k total,        0k used,  3879656k free,   469088k cached







为什么软中断和硬中断占用CPU这么高我就不知道了,这种情况很少见,可能是虚拟机的缘故,也可能是ErlangHttp的缘故。

场景二测试结果和场景一相同,可见ErlangHttp对并发请求的支持是比较稳定的,至少500并发以内没有出现波动,TPS不变,并发上升后,响应时间线性上升。
  • 大小: 111.9 KB
  • 大小: 70.5 KB
3
0
分享到:
评论

相关推荐

    couchdb-benchmarks:一些用于测试CouchDB性能的基准脚本

    我目前正在这些基准测试上,以获取有关CouchDB扩展属性的第一手数据。 我特别关心磁盘使用情况(弄清楚何时需要分片)和复制速度。 但是,在此过程中,我还将收集其他可能有用的信息,但请记住,我的测试方法将明确...

    CouchDB权威指南(中文 完整版)

    同时,CouchDB还支持冲突检测和解决机制,能够在不同节点之间自动解决数据冲突。 ### 安全性与权限管理 CouchDB提供了丰富的安全特性,包括身份验证、授权以及加密等。管理员可以为每个数据库设置访问控制列表...

    apache-couchdb-3.1.1.zip

    CouchDB适用于那些需要高性能读取、灵活数据模型、离线支持和跨设备同步的应用场景,例如移动应用、物联网(IoT)设备数据存储、内容管理系统等。由于其轻量级设计和易用性,CouchDB也常被用作开发原型和小型项目的...

    Laravel开发-laravel-couchdb

    `laravel-couchdb` 是一个针对 Laravel 5.x 的扩展包,它为 Laravel 提供了对 CouchDB 数据库的支持,允许开发者利用雄辩(Eloquent)模型和查询构建器进行便捷操作。 1. **CouchDB 简介** CouchDB 是一个开源的...

    Node.js-复制整个CouchDB集群的一种容错方法

    在`redgeoff-replicate-couchdb-cluster-4ae16e7`这个文件名中,`redgeoff`可能是作者的名字或项目名称,`replicate`表示复制,这是CouchDB的关键特性之一,而`couchdb-cluster`指明我们正在处理CouchDB集群,`4ae...

    PyPI 官网下载 | tornado-couchdb-0.2.5.tar.gz

    3. 使用CouchDB的视图进行数据查询,支持动态构建和执行视图。 4. 监听数据库变化,实现实时更新。 5. 处理复制和冲突解决,这对于多节点部署或离线同步的应用非常重要。 在“tornado-couchdb-0.2.5.tar.gz”压缩包...

    Python库 | zabbix-agent-extension-couchdb3-0.2.0.tar.gz

    5. 在Zabbix服务器上创建相应的监控项,引用扩展提供的脚本,如`couchdb.status`和`couchdb.stats`,以获取CouchDB3的状态和性能数据。 6. 最后,验证配置是否成功,确保Zabbix能够正常接收并展示CouchDB3的相关指标...

    从测试数据来看Nodejs和Java EE的性能区别.doc

    Marc Fasel,一位拥有丰富经验的高级顾问、架构师和软件开发者,针对Node.js和Java EE进行了详尽的性能测试。他利用CouchDB作为后端存储,创建了一万份4KB的随机文本样本文件,以模拟真实工作负载。测试环境包括配备...

    flycouchdb:CouchDB的迁移工具

    Clojure的动态类型和对Java平台的无缝集成,使得`flycouchdb`能够充分利用Java生态系统的资源,实现高性能的数据迁移。 在实际使用中,`flycouchdb`支持两种主要的操作模式:同步和异步。同步模式下,工具会逐个...

    couchdb-design:使用 ACE-Editor 轻松创建 CouchDB 设计文档

    CouchDB 是一个开源、基于文档的分布式数据库系统,它使用 JSON 存储数据,并支持 JavaScript 作为查询语言。在 CouchDB 中,设计文档(Design Documents)是用于定义视图、索引和 Mango 查询的关键组件,它们对于...

    YCSB是Yahoo公司的一个用来对云服务进行基准测试的工具

    测试完成后,这些数据可以用于性能分析和对比。 5. **报告**: 结果可以通过图形或表格形式展示,便于用户直观地了解系统的性能瓶颈和优化方向。 YCSB的源代码位于`brianfrankcooper-YCSB-82b42cd`这个压缩包中,这...

    沙发连接器:CouchDB访问器

    3. **src/test/java**:测试代码,用于验证CouchDB访问器的功能和性能。 4. **pom.xml**:Maven构建文件,定义了项目的依赖和构建过程。 5. **README.md**:项目说明,包括安装、使用和贡献指南。 通过深入研究这个...

    couchdb-orm:一个简单的CouchDB ORM

    3. **查询构造器**:couchdb-orm可能包含一个查询构造器,用于构建复杂的查询语句,支持链式调用,类似于SQL的WHERE、JOIN等子句。 4. **事务支持**:虽然CouchDB本身并不直接支持传统的关系型数据库事务,但ORM...

    couchdb-github-action:在Github Action上运行CouchDB

    4. 数据库升级测试:在升级CouchDB版本或修改数据库结构时,可以先在测试环境中运行新版本,验证其兼容性和性能。 GitHub Actions工作流配置通常包含以下几个步骤: 1. **触发器**:定义何时启动工作流,例如当PR被...

    mocody:实现单表设计,以及对MongoDB,CouchDB和dynamoDB的统一查询访问

    **mocody** 是一个基于 TypeScript 的开源项目,旨在实现单表设计,并提供对三种流行的NoSQL数据库——MongoDB、CouchDB和Amazon DynamoDB的统一查询接口。这个项目的目标是简化开发流程,使得开发者无需关注底层...

    前端开源库-divanator

    CouchDB是一款基于JSON、JavaScript和HTTP的开源数据库,它允许用户以JSON格式存储数据,并通过JavaScript编写查询和视图逻辑。`divanator`使得在前端环境中与CouchDB的设计文档进行交互变得更加便捷和高效。 **...

    Rug:PHP CouchDB 客户端

    `Rug` 还支持查询CouchDB视图(views),这是CouchDB提供的一种灵活的数据查询机制。视图是由MapReduce函数定义的,可以用来筛选和排序文档。通过`Rug`,你可以这样访问视图: ```php $result = $db->queryView('...

    Python库 | aiocouchdb-0.7.0.tar.gz

    CouchDB的一大特色是其“面向文档”的设计理念,使得存储和查询非结构化数据变得非常直观。 aiocouchdb是针对CouchDB的Python异步接口,利用了Python 3.5以上的asyncio库,提供了一种基于协程的非阻塞I/O操作方式。...

Global site tag (gtag.js) - Google Analytics