【问题标题】:archive querying error (Mod_mam)存档查询错误 (Mod_mam)
【发布时间】:2016-03-11 20:13:54
【问题描述】:

这是我从 mod_mam 得到的错误,我需要帮助来理解这一点

错误日志:

[error] <0.27129.40> CRASH REPORT Process <0.27129.40> with 0 neighbours exited with reason: {process_limit,{max_queue,5590}} in p1_fsm:terminate/8 line 755
2015-12-07 07:25:47.714 [error] <0.336.0> Supervisor ejabberd_c2s_sup had child undefined started with {ejabberd_c2s,start_link,undefined} at <0.27129.40> exit with reason {process_limit,{max_queue,5590}} in context child_terminated
2015-12-07 07:25:53.209 [error] <0.479.0>@gen_iq_handler:process_iq:128 {badarg,[{erlang,binary_to_atom,[null,utf8],[]},{jlib,binary_to_atom,1,[{file,"src/jlib.erl"},{line,934}]},{mod_mam,'-select/8-fun-2-',3,[{file,"src/mod_mam.erl"},{line,675}]},{lists,map,2,[{file,"lists.erl"},{line,1237}]},{mod_mam,select,8,[{file,"src/mod_mam.erl"},{line,669}]},{mod_mam,select_and_send,10,[{file,"src/mod_mam.erl"},{line,569}]},{gen_iq_handler,process_iq,6,[{file,"src/gen_iq_handler.erl"},{line,127}]},{gen_iq_handler,handle_info,2,[{file,"src/gen_iq_handler.erl"},{line,171}]}]}

这与查询档案有关,因为我对 erlang 缺乏了解,我无法理解。请帮助我理解这一点。

【问题讨论】:

  • 不是这样描述的问题。您能否更新您的脚本和 ejabberd 配置,以便获得一些帮助
  • 我正在使用 ejabberd 15.11 最近更新的 mod_mam:默认:总是 db_type:odbc ...
  • 那很好。你能更新你的脚本你到底在做什么吗?还有你的 mod_mam 的 ejabberd 配置?
  • 我没有执行此操作的外部脚本,我只是按照此链接查询xmpp.org/extensions/xep-0313.html#filter-time

标签: erlang xmpp ejabberd


【解决方案1】:

第一个错误的原因是你的服务超载了:

{process_limit,{max_queue,5590}

请注意,ejabberd process_limit 错误消息是关于队列中消息数量的每个进程的限制。这是为了避免让缓慢的进程或消息接收器占用所有服务器资源。 它与每个节点允许的 Erlang 进程数无关。

关于日志中的第二个错误,我猜这是因为您已从旧版本升级实例并且存档中有旧消息。我们改进了 ejabberd 的代码以支持旧的存储消息。 这已经在 ejabberd head 中提交,修复将在 ejabberd 15.12 版本中发布。

【讨论】:

  • 我发现一个erlang节点的进程限制在32767左右。我需要增加队列大小来解决这个问题吗?
  • 我不明白你的问题,因为队列的大小与进程限制无关。没有理由让队列有那么大。您应该首先了解您的消息为何排队。可能您的系统针对您尝试部署的平台的大小进行了错误配置。这不是 MAM 问题,而是关于您的整体消息传递解决方案的一般设计问题。
  • 请查看给出 badarg [error] @gen_iq_handler:process_iq:128 {badarg,[{erlang,binary_to_atom,[null,utf8],[]} 的日志, {jlib,binary_to_atom,1,[{file,"src/jlib.erl"},{line,934}]},{mod_mam,'-select/8-fun-2-',3,[{file," src/mod_mam.erl"},{line,675}]},{lists,map,2,[{file,"lists.erl"},{line,1237}]},{mod_mam,select,8,[ {file,"src/mod_mam.erl"},{line,669}]},{mod_mam,select_and_send,10,[{file,"src/mod_mam.erl"},{line,569}]},{gen_iq_handler ,process_iq,6,[{file,"src/gen_iq_handler.erl"},{line,127}]},{gen_iq_handler,handle_info,2,[{file,"src/gen_iq_handler.erl"},{line,171 }]}]}
  • 是的,我看到了。您的原始日志条目显示该进程自行退出,因为已达到该进程的队列中的消息数。
  • 感谢 Mickael,但我认为 mod_mam 中的 badarg 错误与队列大小或导致崩溃无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 2020-09-22
  • 2017-02-24
  • 2017-05-01
  • 2021-04-12
  • 1970-01-01
  • 2013-05-19
相关资源
最近更新 更多