couchdb查看os_process_error - 大文档

时间:2014-01-22 03:41:01

标签: views couchdb documents

我有一个数据库,我们正在填写文档,其中一些是10 KB,其中一些是大约70 MB。

尝试加载这些大型文档的任何视图都会失败并显示错误: {“error”:“os_process_error”,“reason”:“{exit_status,0}”} ,即使是这个基本的:

function(doc) {
    emit(null, "test");
}

os_process_error 设置为35000,但调用视图会在~15秒内消失:

time curl -X GET http://localhost:5984/portal_production/_design/all_data_keys/_view/view1
{"error":"os_process_error","reason":"{exit_status,0}"}

real    0m15.907s
user    0m0.016s
sys 0m0.000s

从其他一些线程来看,这似乎是相关的堆栈大小:couchdb issue thread。虽然我找不到对方法值的引用,但我已应用此补丁来增加堆栈大小。所以我在黑暗中拍摄了一下。

Soooo ......真正的问题是:在大型文档上使用视图的正确方法是什么?我确定我不是第一个遇到这个问题的人。

1 个答案:

答案 0 :(得分:7)

您已达到couchjs堆栈大小限制。如果你使用CouchDB 1.4.0+,他的大小默认限制在64 MiB。您可以通过在CouchDB配置中为JavaScript查询服务器指定-S <number-of-bytes>选项来增加它。例如,要将堆栈大小设置为128 MiB,您的配置值将如下所示:

[query_servers]
javascript = /usr/bin/couchjs -S 134217728 /usr/share/couchdb/server/main.js

请注意,根据您的操作系统,/usr/bin/couchjs可能会有所不同。添加此更改后,您需要重新启动CouchDB。

如果您尝试通过HTTP API更新JavaScript查询服务器配置,请确保kill来自shell的所有couchjs进程让他们应用更改。

如果您的CouchDB版本<1.4,请先尝试升级。