`ejabberdctl start`导致“kernel pid terminated”错误 - 我该怎么办? [英] `ejabberdctl start` results in "kernel pid terminated" error -- what do I do?

查看:447
本文介绍了`ejabberdctl start`导致“kernel pid terminated”错误 - 我该怎么办?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经google了三个小时,但没有用。

I have googled for three hours but to no avail.

我有一个没有安装apt的ejabberd安装。它是从源安装的,没有任何名为ejabberd的程序。开始和停止,一切都是通过ejabberdctl。

I have an ejabberd installation which is not installed using apt. It is installed from source and there is no program called ejabberd in it. Start and Stop and everything is through ejabberdctl.

它运行完美一个月,突然有一天它停止与臭名昭着的

It was running perfectly for a month and all of a sudden one day it stopped with the infamous

kernel pid terminated error

随时我做

sudo ejabberdctl start --node ejabberd@MasterService

一个erl_crash文件生成,当我尝试

A erl_crash file gets generated and when i try

ejabberdctl

我得到

Failed to connect to RPC at node ejabberd@MasterService

现在我尝试了什么


  1. 试图杀死所有正在运行的ejabberd,beam,epmd进程,并开始新的 - DID NOT WORK

  2. 检查/ etc / hosts和hostname,好。主机名在主机文件中提供IP

  3. 检查ejabberdctl.conf文件,以确保主机名确实正确,节点名称正确

  4. 检查.erlange.cookie文件正在创建内容

  1. Tried killing all running process of ejabberd, beam, epmd and starting fresh - DID NOT WORK
  2. Checked /etc/hosts and hostname and all is well. Hostname is provided in hosts file with the IP
  3. Checked the ejabberdctl.conf file to ensure teh host name is indeed right and the node name is right
  4. checked .erlange.cookie file is being created with content in it

在所有的网络中,搜索引导我上述之一。

In all of web one way or another the search led me to either one of the above.

我没有别的地方去,不知道在哪里看。任何帮助将不胜感激。

I have nowhere else to go and dont know where else to look. Any help would be much appreciated.

推荐答案

你必须分析崩溃转储,试图猜测为什么它失败。

You'll have to analyze the crash dump to try to guess why it failed.

为了执行这个任务,Erlang有一个特殊的web工具(叫做呃,呃,$ $ $ c $ webtool ),一个特殊的应用程序—崩溃转储查看器可能会用于加载转储并检查崩溃时Erlang进程的堆栈跟踪。

To carry out this task, Erlang has a special webtool (called, uh, webtool) from which a special application — Crash Dump Viewer — might be used to load a dump and inspect the stack traces of the Erlang processes at the time of the crash.

您必须


  1. 安装必需的软件包:

  1. Install the necessary packages:

# apt-get install erlang-webtool erlang-observer


  • 启动Erlang解释器:

  • Start an Erlang interpreter:

    $ erl
    

    运行webtool。在最简单的情况下,它会在本地主机上收听:

    Run the webtool. In a simplest case, it will listen on the local host:

    webtool:start().
    

    (注意期间)它会打印一个URL,在浏览器中浏览到达到正在运行工具。

    (Notice the period.) It will print back an URL to navigate in your browser to reach the running tool.

    如果在服务器上发生这种情况,而您更希望在某些非本地主机界面上使用Web工具来监听,那么调用编译将会更加棘手:

    If this happens on a server, and you'd rather like to have the webtool listen on some non-local-host interface, the call encantation would be trickier:

    webtool:start(standard_path, [{port, 8888}, {bind_address, {0, 0, 0, 0}}, {server_name, "server.example.com"}]).
    

    {0,0,0,0} IP规范将使其随处可见,您也可以指定一些更合理的八位字节,例如 {192,168,0,1} server_name 子句可能使用任意名称—这将是生成的URL(服务器的主机名)中打印的内容。

    The {0, 0, 0, 0} IP spec will make it listen everywhere, and you might as well specify some more sensible octets, like {192, 168, 0, 1}. The server_name clause might use arbitrary name — this is what will be printed in the generated URL, the server's hostname.

    现在使用浏览器连接到工具,导航到启动工具菜单条目,启动崩溃转储查看器,并创建一个链接,它出现在工具的顶部菜单中。继续进行,并找到一个链接来加载崩溃转储。

    Now connect to the tool with your browser, navigate to the "Start tools" menu entry, start crash dump viewer and make a link to it appear in the tool's top menu. Proceed there and find a link to load the crash dump.

    加载崩溃转储后,尝试弄乱工具的界面,查看堆栈跟踪活跃的Erlang流程。其中至少有一个应该包含一些有争议的东西,应该包含一个错误消息—这就是您正在寻找的细节(或者在 ejabberd邮件列表上查询)。

    After loading a crash dump try to mess around with the tool's interface to look at the stack traces of the active Erlang processes. At least one of them should contain something fishy, which should include an error message — that's what you're looking after to refine your question (or ask another at the ejabberd mailing list).

    要退出该工具,请运行

    webtool:stop().
    

    然后通过运行

    q().
    

    等待一会儿或按 Ctrl-g 然后输入字母 q ,然后按返回键。

    and waiting a bit or pressing Ctrl-g and then entering the letter q followed by pressing the Return key.

    相关链接包括:崩溃转储查看器手册 webtool手册

    这篇关于`ejabberdctl start`导致“kernel pid terminated”错误 - 我该怎么办?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆