CouchDB性能:1.6.1 vs 2.1.1

Wes*_*sty 5 performance couchdb response-time

我们正在考虑将RHEL服务器上的CouchDB从1.6.1升级到2.1.1.然而,在我们这样做之前,我们想要进行性能测试.因此,我们创建了一个直接针对数据库的JMeter测试.它不使用任何随机值,因此测试将完全相同,我们可以比较两个结果.这只是一个独立的服务器,我们没有使用群集.我对两者都进行了完全相同的测试.我运行了1.6.1的测试,然后在同一台机器上安装了2.1.1.我为每次测试运行创建了新的数据库.[我还将Erlang更新为R19.3.]

结果非常令人震惊:

Average response times: 
1.6.1:   271.15 ms
2.1.1:   494.32 ms

POST and PUTs were really bad ...
POST:
1.6.1:   38.25 ms
2.1.1:   250.18 ms

PUT:
1.6.1:   37.33 ms
2.1.1:   358.76
Run Code Online (Sandbox Code Playgroud)

我们只是使用所有配置选项的默认值,除了我们更改1.6.1 delayed_commits = false(现在是2.1.1中的默认值).我想知道是否有一些默认值发生变化会使2.1.1如此糟糕.

当我setup从Fauxton UI 运行CouchDB时,它将以下内容添加到我的local.ini:

[cluster]
n = 1
Run Code Online (Sandbox Code Playgroud)

是否会导致CouchDB尝试使用群集,或者是否与此处没有条目相同?另外一件事,我删除了_global_changes数据库,因为它似乎会添加我们不需要的额外处理.

SCd*_*CdF 1

这是否导致 CouchDB 尝试使用集群,或者是否与这里根本没有条目相同?

从你的描述来看并不明显。如果您将 CouchDB 2.0 设置为集群,那么它就是这样工作的。根据您遵循的设置说明,您应该了解这一点:http://docs.couchdb.org/en/2.1.1/install/setup.html

您可以通过在磁盘上查找文件并查看它们是否位于shards目录中来判断。

我很确定您至少需要两个,因此设置n = 1似乎不是您应该做的事情。

如果您尝试在单节点中运行,请按照我上面链接的说明进行操作。

另一件事是,我删除了 _global_changes 数据库,因为它似乎会添加我们不需要的额外处理。

您可能不想删除数据库的随机部分,除非有说明可以这样做?