5

在过去的几个月里,我们因 Cloudant 上没有预料到的大量 HTTP 请求而被收费。通过在本地查看 CouchDB 控制台,我发现对于每个连续复制,每 5 秒左右发出一次 GET 请求。

我已经停止了我在 Futon 中可以找到的所有连续复制,并且我对我们拥有的每个 Cloudant 帐户都做了同样的事情。通过查看 Cloudant 的仪表板,我发现 GET 请求减少了(数以千计),但并没有降到合理的水平。所以肯定还有一些连续的复制,但我找不到它们。

如何找到并停止剩余的复制?

4

1 回答 1

1

要识别可能对用户隐藏的连续复制,最好的方法是查询 curl 命令,调用 _active_tasks,并应用 jq 过滤器以仅显示“复制”类型的任务。

也就是说,在命令行中,运行如下形式的命令:

curl 'https://username:password@username.cloudant.com/databasename/_active_tasks | jq 'map(select(.type == "replication"))'

可以应用相同的方法来检索其他活动任务(view_compaction、database_compaction 等)


也就是说,一般来说,使用 _replicator 数据库时,基于 Cloudant 的复制要顺畅得多。为此:

1) 作为初始一次性任务,创建数据库:

 https://username.cloudant.com/_replicator 

2) 然后,为每个复制创建一个文档。如果您在文档中有 "continuous":true ,它将被视为连续的。

3) 然后,要取消复制,您只需删除文档。

所有上述命令(例如创建和删除文档)都在 Cloudant 的网站以及整个 Stack Overflow 上都有详细记录,因此请参阅那里了解更多详细信息。

最后,必须添加usr_ctx字段,以便触发复制并在您的用户上下文中运行。这很关键,以便在您查询 _active_tasks 时显示出来,否则它将匿名运行,并且只有在管理员查询时才会显示在 _active_tasks 中。这正是原始海报中发生的情况。

于 2013-08-15T20:56:12.697 回答