CouchDB中节点之间的磁盘使用不平衡

时间:2017-04-26 05:16:33

标签: couchdb couchdb-2.0

我已经构建了一个包含4个节点的CouchDB集群来存储我检索到的推文

群集配置为包含8个分片,并保留每个文档的3个副本

[cluster]
q=8
r=2
w=2
n=3

我没有添加任何视图或其他索引,Fauxton中显示的数据库大小为4.3 GB

但是,CouchDB在其中一个节点中占用了极大的磁盘空间

$ ansible -i hosts -s -m shell -a 'du /vol/couchdb/shards/* -sh' couchdb
crake.couchdb.cloud | SUCCESS | rc=0 >>
363M    /vol/couchdb/shards/00000000-1fffffff
990M    /vol/couchdb/shards/20000000-3fffffff
17G     /vol/couchdb/shards/40000000-5fffffff
1.4G    /vol/couchdb/shards/60000000-7fffffff
359M    /vol/couchdb/shards/80000000-9fffffff
989M    /vol/couchdb/shards/a0000000-bfffffff
12G     /vol/couchdb/shards/c0000000-dfffffff
1.6G    /vol/couchdb/shards/e0000000-ffffffff

darter.couchdb.cloud | SUCCESS | rc=0 >>
1.4G    /vol/couchdb/shards/00000000-1fffffff
367M    /vol/couchdb/shards/20000000-3fffffff
1001M   /vol/couchdb/shards/40000000-5fffffff
1.4G    /vol/couchdb/shards/60000000-7fffffff
1.4G    /vol/couchdb/shards/80000000-9fffffff
364M    /vol/couchdb/shards/a0000000-bfffffff
998M    /vol/couchdb/shards/c0000000-dfffffff
1.4G    /vol/couchdb/shards/e0000000-ffffffff

bustard.couchdb.cloud | SUCCESS | rc=0 >>
1004M   /vol/couchdb/shards/00000000-1fffffff
1.4G    /vol/couchdb/shards/20000000-3fffffff
1.4G    /vol/couchdb/shards/40000000-5fffffff
365M    /vol/couchdb/shards/60000000-7fffffff
1001M   /vol/couchdb/shards/80000000-9fffffff
1.4G    /vol/couchdb/shards/a0000000-bfffffff
1.4G    /vol/couchdb/shards/c0000000-dfffffff
364M    /vol/couchdb/shards/e0000000-ffffffff

avocet.couchdb.cloud | SUCCESS | rc=0 >>
1.4G    /vol/couchdb/shards/00000000-1fffffff
1.4G    /vol/couchdb/shards/20000000-3fffffff
368M    /vol/couchdb/shards/40000000-5fffffff
999M    /vol/couchdb/shards/60000000-7fffffff
1.4G    /vol/couchdb/shards/80000000-9fffffff
1.4G    /vol/couchdb/shards/a0000000-bfffffff
364M    /vol/couchdb/shards/c0000000-dfffffff
1001M   /vol/couchdb/shards/e0000000-ffffffff

crake.couchdb.cloud中,两个分片40000000-5fffffffc0000000-dfffffff远远大于其他分片。

我曾尝试删除crake.couchdb.cloud中的那些大分片,并等待CouchDB本身重建。重建后磁盘使用率保持平衡,但在我开始向数据库添加新文档后,它再次逐渐失去平衡。

我正在使用MD5(tweet[id_str])作为文档ID。这可能是问题的原因吗?

我对此感到非常困惑,因为我认为即使我犯了任何错误,它也应该占用3个不同节点的资源,因为数据会在群集中复制。

请帮助,谢谢。

更新

后来我删除了所有VPS实例并使用3个CouchDB节点重建了集群,即AvocetBustardCrake。新的群集配置如下:

[cluster]
q=12
r=2
w=2
n=2

在重建之前,我将所有数据复制到另一个CouchDB实例,这样我就可以在完成之后将它们传回去。恢复后磁盘使用率保持平衡。

此外,我在第4个节点上引入了HAProxy,即Darter,作为负载均衡器。

所以这一次,我所有的Twitter检索器都会将他们的请求发送给平衡器。但是,磁盘使用率再次变得不平衡,而且正好是占用更多空间的第3个节点Crake

bustard.couchdb.cloud | SUCCESS | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdc         81G  9.4G   68G  13% /vol

avocet.couchdb.cloud | SUCCESS | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdc         81G  9.3G   68G  13% /vol

crake.couchdb.cloud | SUCCESS | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdc         81G   30G   48G  39% /vol

数据库大小仅为4.2 GB,而Crake的使用量大约是此大小的7倍!

我现在完全无能为力......

更新2

来自所有节点的_dbs信息

crake.couchdb.cloud | SUCCESS | rc=0 >>
{
    "db_name": "_dbs",
    "update_seq": "11-g2wAAAABaANkABtjb3VjaGRiQGNyYWtlLmNvdWNoZGIuY2xvdWRsAAAAAmEAbgQA_____2phC2o",
    "sizes": {
        "file": 131281,
        "external": 8313,
        "active": 9975
    },
    "purge_seq": 0,
    "other": {
        "data_size": 8313
    },
    "doc_del_count": 0,
    "doc_count": 7,
    "disk_size": 131281,
    "disk_format_version": 6,
    "data_size": 9975,
    "compact_running": false,
    "instance_start_time": "0"
}

avocet.couchdb.cloud | SUCCESS | rc=0 >>
{
    "db_name": "_dbs",
    "update_seq": "15-g2wAAAABaANkABxjb3VjaGRiQGF2b2NldC5jb3VjaGRiLmNsb3VkbAAAAAJhAG4EAP____9qYQ9q",
    "sizes": {
        "file": 159954,
        "external": 8313,
        "active": 10444
    },
    "purge_seq": 0,
    "other": {
        "data_size": 8313
    },
    "doc_del_count": 0,
    "doc_count": 7,
    "disk_size": 159954,
    "disk_format_version": 6,
    "data_size": 10444,
    "compact_running": false,
    "instance_start_time": "0"
}

bustard.couchdb.cloud | SUCCESS | rc=0 >>
{
    "db_name": "_dbs",
    "update_seq": "15-g2wAAAABaANkAB1jb3VjaGRiQGJ1c3RhcmQuY291Y2hkYi5jbG91ZGwAAAACYQBuBAD_____amEPag",
    "sizes": {
        "file": 159955,
        "external": 8313,
        "active": 9999
    },
    "purge_seq": 0,
    "other": {
        "data_size": 8313
    },
    "doc_del_count": 0,
    "doc_count": 7,
    "disk_size": 159955,
    "disk_format_version": 6,
    "data_size": 9999,
    "compact_running": false,
    "instance_start_time": "0"
}

0 个答案:

没有答案