【问题标题】:CouchDB heart-beat time-outCouchDB 心跳超时
【发布时间】:2011-05-28 04:08:22
【问题描述】:

我的 CouchDB(生产)服务器有时会在我不希望的情况下关闭。在检查日志时,我注意到 Erlang/CouchDB(一个或另一个)发送了一个心跳,并且该心跳被监控。当发生超时时,服务器被残忍地杀死(couchdb -k)。这几乎总是不受欢迎的行为,尤其是在生产服务器上。

我遇到过this issue,它表示相同,并表明这主要发生在服务器负载较重的情况下,我也注意到了这一点。

我正在寻找一种解决方案来保持我的服务器运行,但要做到这一点,我需要更多地了解这种行为。不幸的是,the CouchDB wikithe guide 都没有提供太多关于此的信息(仅更改 API 中的参数)。

有人可以提供有关此的更多信息吗?

【问题讨论】:

  • 您引用的问题指出该问题与 erlang vm 版本有关,并且似乎已在 R13B 中修复。你用的是哪个版本?

标签: erlang timeout couchdb heartbeat


【解决方案1】:

最有可能的 heart 是 erlang vm 启动时启动的 heart。

在此处查看 heart switch http://erlang.org/doc/man/erl.html 及其文档在此处 http://erlang.org/doc/man/heart.html

现在,您可以提供一个指向您使用的沙发存储库的链接,这样我们就可以找到一个带有 'erl something -heart' 的脚本,或者自己 grep 出来。

我不确定沙发构建系统的状态是什么。你使用的是 cloudant 版本还是纯 apache?

【讨论】:

  • 我正在使用存储库来维护我的 CouchDB 安装:rpmfind.net/linux/RPM/dag/redhat/el5/x86_64/…
  • 尝试修改 bin/couchdb.tpl.in (HEART_BEAT_TIMEOUT) 但这是一个疯狂的猜测,所以也许有经验的人可以帮助你。
【解决方案2】:

couchdb -k 应该杀死后台进程,然后应该重新启动沙发。但是,默认情况下,重新启动功能被禁用。要启用它,您应该使用值大于 0 的 -r 参数。您可以在 bin/couchdb 脚本中执行此操作 - 将 RESPAWN_TIMEOUT 从 0 更改为例如5.

【讨论】:

  • 我放弃了使用 CouchDB 的内置重启功能,转而依赖外部脚本——从简单的 while/sleep 循环到 upstart 脚本,一切都会变得更加可靠。 (这可能在 1.6.1 之后有所改善,据可能最终花时间找出根本原因的人说:issues.apache.org/jira/browse/COUCHDB-1917
猜你喜欢
  • 1970-01-01
  • 2020-07-11
  • 2016-11-23
  • 2017-01-11
  • 2013-07-18
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多