当有多个观察者时,我在CouchDB的_changes
Feed上表现不佳时遇到了问题。
我在笔记本电脑上的虚拟机内运行CouchDB,并且使用CouchDB的HTTP API,多个iOS客户端通过网络在其中一个数据库上消耗_changes?feed=continuous
。随着客户端数量的增加,更改的速度会降低到爬行速度。
N.B。我实际上是通过Apache反向代理与CouchDB进行通信,后者正在压缩响应。
我还注意到,在对Feed应用过滤器时,它通常需要很长时间才会对HTTP流进行任何更改。几乎就像我在等待检查一批不符合我的过滤器的文件。
我可以启用哪些设置或我可以进行哪些优化以帮助加速这一切?
答案 0 :(得分:2)
当您意识到每个更改时,对于每个更改,couchdb都要求查询服务器评估filter()函数,延迟随着过滤_changes feed的使用者数量的增加而出现并不令人意外。显然它不会缓存结果,因此必须为每个消费者执行此操作。
您可以尝试删除过滤器参数并使用 include_docs = true 。这样,Feed生产者就不必要求视图服务器评估更改。这应该使它更具响应性。当然,这会带来显着增加Feed中传输数据量的代价,您必须在客户端复制filter()函数逻辑。它并不理想,但我认为它值得一试。