4

_changes当有多个观察者时,我在 CouchDB 的提要上表现不佳。

我在笔记本电脑上的虚拟机中运行 CouchDB,并且多个 iOS 客户端正_changes?feed=continuous在使用 CouchDB 的 HTTP API 通过网络在其中一个数据库上使用。随着客户端数量的增加,更改通过的速度会变慢。

注意我实际上是通过 Apache 反向代理与 CouchDB 通信,它正在压缩响应。

而且我还注意到,在对提要应用过滤器时,它通常会持续很长时间而不会对 HTTP 流进行任何更改。几乎就像我在等待它检查一批不符合我过滤条件的文档一样。

是否有任何我可以启用的设置或我可以进行的优化来帮助加快这一切?

4

1 回答 1

2

当您意识到,对于每个更改 couchdb 都要求查询服务器评估 filter() 函数时,延迟随着过滤的 _changes 提要的消费者数量的增加而增加也就不足为奇了。显然它不会缓存结果,因此它必须为每个消费者执行此操作。

您可以尝试删除filter参数并改用include_docs=true。这样,提要生产者就不必要求视图服务器评估更改。这应该使它更具响应性。当然,这会带来显着增加在提要中传输的数据量的代价,并且您必须在客户端复制 filter() 函数逻辑。它并不理想,但我认为它值得一试。

于 2013-10-04T09:33:17.457 回答