首页 > 解决方案 > 在 couchdb 从 1.6.1 迁移到 2.3.1 期间,由于内存问题 couchup 实用程序需要大量时间重建视图

问题描述

在我从 couchdb 迁移1.6.1到的过程中2.3.1,couchup 实用程序需要花费大量时间来重建视图。couchup 实用程序存在内存问题。数据库的大小在 500 GB 范围内。它需要永远。已经快5到6天了,还没有完成。有什么办法可以加快速度吗?

尝试进行复制时,在 couchup 运行 2-3 分钟后,couchdb 因内存泄漏问题而死,然后再次启动。复制大约需要 10 天。对于复制,它显示进度条,但对于重建视图,它不显示进度条。不知道做了多少。

couchdb 安装在 RHEL Linux 服务器中。

标签: viewerlangcouchdbrebuild

解决方案


减少积压增长:

当 couchup 遇到重建时间超过 5 秒的视图时,couchup 将继续调用其他视图 url,从而触发它们的重建。一旦运行了许多长时间运行的视图重建,即使是更短的重建也将需要至少 5 秒,从而导致大量积压。如果单个数据库很大或者(map/reduce 功能非常低效),最好将超时设置为 5 分钟。如果您看到不止一对:

 Timeout, view is processing. Moving on.

消息可能是时候杀死沙发并将超时时间加倍。

观察指数增长

默认情况下view_index_dir与数据库目录相同,因此如果数据在,/var/lib/couchdb/shards/var/lib/couchdb配置目录和索引存储在/var/lib/coucdh/.shards. 您可以观察哪些索引分片文件正在创建和增长,或者移动view_index_dir到单独的地方以便于观察。

什么资源快用完了?

您可以在一般情况下调整 couchdb,一旦系统没有重建所有索引等,就很难说是否需要调整。

特别是,您需要查找并禁用任何自动压缩。查看文件/proc/[couchdb proc]以找出有效的 fd 限制以及有多少打开的文件以及崩溃是否发生在特定数量的打开文件附近。由于分片,打开文件的数量通常是早期版本数量的倍数。

查看内存增长并确定它是否足够稳定以使用交换来防止问题。


推荐阅读