我是 Couch 的新手,并且继承了一个中型项目,该项目在大约 70 个客户端 Android 手机(所有 HTC Desire S)上使用 CouchBase Mobile(开发人员预览版 V2.0),然后与主 CouchDB 服务器同步。
不幸的是,构建系统的人已经不在了,所以我正在寻求社区的帮助。
我的观察:
- 客户端电话似乎处于调用复制、然后失败、然后重新调用复制、失败等几乎恒定的状态。除了无法从服务器拉取新数据之外,它还消耗过多的电池力量。
- 服务器明显负担过重。Erlang 和 Couch 占用了大量的 CPU 和内存。
- 当服务器负担较轻时,复制似乎可以正常工作。例如,在重新启动 CouchDB 服务后,复制可以正常工作一段时间。
我的假设:
- 对我来说,这听起来像是一个负载平衡问题。随着服务器变得繁忙,越来越多的客户端复制失败,然后它们只是更频繁地请求复制,使问题变得更糟。
我如何尝试修复它:
在客户端的 CouchBase“default.ini”文件中,我编辑了以下内容,试图限制客户端调用复制的频率。
- max_replication_retry_count = 1
- http_connections = 5
- 连接超时 = 60000
尽管如此,我仍然可以看到 CouchBase 在 LogCat 中逐渐消失,不断尝试但未能复制。
谁能建议我如何开始调试它,以便更有效地隔离问题?指出我正确的方向?...非常感谢。
这是来自 LogCat 09-28 12:48:48.593的复制错误"0284a8a927077abfd2b86a2616e07fed"
:I/CouchDB(4468): [info] [<0.8140.0>] Replication is using:
09-28 12:48:48.593: I/CouchDB(4468) ):4 个工作进程
09-28 12:48:48.593:I/CouchDB(4468):工作批量大小为 500
09-28 12:48:48.593:I/CouchDB(4468):5 个 HTTP 连接
09-28 12 :48:48.593: I/CouchDB(4468): 连接超时 60000 毫秒
09-28 12:48:48.593: I/CouchDB(4468): 套接字选项是: [{keepalive,true},{nodelay,false} ]
09-28 12:48:48.593: I/CouchDB(4468): 源开始序列 4971
09-28 12:48:49.824: I/CouchDB(4468): [info] [<0.8140.0>] 文档funf_client_to_server_49fd7812-409d-47df-a1cd-888db15a24ae
触发复制0284a8a927077abfd2b86a2616e07fed
09-28 12:48:49.834: I/CouchDB(4468): [info] [<0.8139.0>]0284a8a927077abfd2b86a2616e07fed
在 <0.8140.0> ( funf
-> https://*****@monarca.dk:5984/monarca_funf/
)开始新的复制
09-28 12:48:51.225: E/ CouchDB(4468):[错误] [<0.8140.0>] ChangesReader 进程因原因死亡:{file_corruption,
09-28 12:48:51.225: E/CouchDB(4468): <<"file corruption">>}
09 -28 12:48:51.225:E/CouchDB(4468):[错误] [<0.8140.0>] 复制0284a8a927077abfd2b86a2616e07fed
( funf
-> https://*****@monarca.dk:5984/monarca_funf/
) 失败:
changes_reader_dieed 09-28 12:48:51.245:I/CouchDB(4468):[ info] [<0.8149.0>] 重试 POST 请求到 https:// * @monarca.dk:5984/monarca_funf/_revs_diff 在 0.25 秒内由于错误关闭_on_request
09-28 12:48:51.245: I/CouchDB(4468): [info] [<0.8148.0>] 重试 POST 请求到 https:// * @monarca.dk:5984/monarca_funf/_revs_diff 在 0.25 秒内由于错误关闭_on_request
09-28 12:48:51.476:E/CouchDB(4468):[错误] [<0.298.0>] 复制错误0284a8a927077abfd2b86a2616e07fed
(由文档触发funf_client_to_server_49fd7812-409d-47df-a1cd-888db15a24ae
):changes_reader_died
这是有问题的复制文档。
{"_id":"funf_client_to_server_49fd7812-409d-47df-a1cd-888db15a24ae","_rev":"825-082674db3441880a23d6b6aa51be7e3e","target":"https:// * @monarca.dk:5984/monarca_funf","continuous" :false,"source":"funf","filter":"monarcaandroid/deletefilter","_replication_id":"3dfdfca7dfd47d9352c9048497660e4c","_replication_state":"error","_replication_state_time":"2012-09-28T12:51: 25+02:00"}
这是复制文档引用的“删除过滤器”。
"function(doc) {\n return !doc._deleted;\n}"