刚刚在全新的 CentOs6.6 服务器上安装了 RabitMq(rabbitMq 3.4.1,erlang 说 17),但无法启动。
Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_{log, _err}
rabbitmq-server.
启动日志
Stack trace:
[{inet_gethost_native,ensure_started,0,
[{file,"inet_gethost_native.erl"},{line,548}]},
{inet_gethost_native,getit,2,
[{file,"inet_gethost_native.erl"},{line,487}]},
{inet,gethostbyname_tm_native,4,[{file,"inet.erl"},{line,1094}]},
{inet,gethostbyname,3,[{file,"inet.erl"},{line,459}]},
{erl_epmd,port_please1,3,[{file,"erl_epmd.erl"},{line,81}]},
{rabbit_networking,record_distribution_listener,0,[]},
{rabbit_networking,boot,0,[]},
{rabbit,'-run_step/3-lc$^1/1-1-',2,[]}]
BOOT FAILED
===========
Error description:
{could_not_start,rabbit,
{bad_return,
{{rabbit,start,[normal,[]]},
{'EXIT',
{rabbit,failure_during_boot,
{boot_step,networking,
{could_not_start_server,inet_gethost_native}}}}}}}
如果您需要任何其他信息,请告诉我。任何帮助都将不胜感激,我认为这台服务器被诅咒了。上次我在万圣节前后获得了一台新服务器。
看起来它正在运行status
。在 etc/hosts 中,有一行是我的主机,其中有 ip 地址,但删除它没有用。
Status of node rabbit@host4 ...
Error: unable to connect to node rabbit@host4: nodedown
DIAGNOSTICS
===========
attempted to contact: [rabbit@host4]
rabbit@host4:
* connected to epmd (port 4369) on host4
* epmd reports: node 'rabbit' not running at all
no other nodes on host4
* suggestion: start the node
current node details:
- node name: 'rabbitmqctl-29678@host4'
- home dir: /var/lib/rabbitmq
我也正在运行这个过程。如果它有帮助的话。
root@host4 [981 19:09:47 ~]# ps aux|grep rabbit
rabbitmq 16068 0.0 0.0 10828 528 ? S 16:13 0:00 /usr/lib64/erlang/erts-6.2/bin/epmd -daemon
运行 hostname -f 也会显示正确的主机名。例如
host4.mysite.com
作为回复,我运行了这些命令:rabbit 没有运行,并且不会作为 app_start 连接。
以下是结果rpm -qa --queryformat '%{NAME}\n' |grep erlang
erlang-mnesia
erlang-otp_mibs
erlang-reltool
erlang-snmp
erlang-erl_docgen
erlang-examples
erlang-erts
erlang-cosEvent
erlang-ic
erlang-debugger
erlang-stdlib
erlang-cosProperty
erlang-jinterface
erlang-typer
erlang-compiler
erlang-asn1
erlang-cosNotification
erlang-cosFileTransfer
erlang-parsetools
erlang-wx
erlang-dialyzer
erlang
erlang-solutions
erlang-hipe
erlang-ssl
erlang-ssh
erlang-percept
erlang-odbc
erlang-webtool
erlang-megaco
erlang-syntax_tools
erlang-public_key
erlang-edoc
erlang-cosTransactions
erlang-erl_interface
erlang-observer
erlang-common_test
erlang-kernel
erlang-runtime_tools
erlang-orber
erlang-eldap
erlang-sasl
erlang-os_mon
erlang-inets
erlang-diameter
erlang-tools
erlang-crypto
erlang-cosTime
erlang-eunit
erlang-test_server
erlang-gs
erlang-ose
erlang-xmerl
erlang-cosEventDomain
erlang-et
我确实有 ip_tables,所以我认为这可能是防火墙问题,但我可以成功地 telnet 到 rabbit 正在用作4369
端口的主机名。
当我跑步时nmap -p 5672
Starting Nmap 5.51 ( http://nmap.org ) at 2014-11-03 20:30 CST
Nmap scan report for host4 (127.0.0.1)
Host is up (0.000049s latency).
Other addresses for host4 (not scanned): xxx.xxx.xxx.xxx
rDNS record for 127.0.0.1: localhost.localdomain
PORT STATE SERVICE
5672/tcp closed amqp
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
删除这个东西的最佳方法是什么?当我yum remove rabbitmq-server
安装旧版本时3.3.5
,我收到此错误消息
Crash dump was written to: erl_crash.dump
Failed to create aux thread
Aborted (core dumped)
答案1
为了将来的参考,我已经解决了这个问题,在 RabbitMq 社区的帮助下,他们通过一个简单的声明为我指明了这个方向。
这表明 Erlang VM 无法创建线程。您是否设置了任何资源或安全限制?
这是对 2 项内容的直接回应。
Failed to create aux thread
不确定为什么我以前没有想到,因为我确实在 Erlang 转储中看到过这个
processes: 13064032
processes_used: 13064032
但是我不确定 Erlang 进程数如何转换为系统进程,但无论如何我认为这是一个错误或编程不兼容。这完全没有意义,因为在我的虚拟开发服务器上安装很顺利。以及我们旧的 CentOs 5.1 服务器。此外,由于这是一台新服务器,速度是我们旧服务器的 3 倍以上,我认为达到资源限制不是问题。我只是需要有人说出来让click
我明白。
无论如何,经过一番研究后,我运行了这个命令
#su rabbitmq
bash-4.1$ ulimit -a
=============================
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 128218
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) 131072
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 100
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
这里最重要的是这部分:
max user processes (-u) 100
检查我的开发箱(其中有一个带有管理插件的功能性 RabbitMq 安装)我进一步看到了这一点。
Erlang processes 206
因此,经过206
进一步100
的研究,我发现此设置的默认值通常为 1024,并且我可以在/etc/security/limits.conf
该文件中更改它。
* hard nproc 100
所以我刚刚将其提升到1024
rabbitmq 用户的数量
rabbitmq hard nproc 1024
然后它就启动了!启动并检查状态后,我看到了
{processes,[{limit,1048576},{used,147}]},
我相信这里的限制是系统范围的?仍然不太清楚 Erlang 进程和这些其他进程号之间的关系。
因此,总而言之,100 个进程不足以让 Erlang 正常工作。这是一个云托管的 SSAE 16 专用网络服务器,通常托管公司会将其设置为供使用resellers
,即,您可以将服务器的部分内容外包给客户网站。这很可能就是他们将默认限制设置得如此低的原因。我们使用这种类型的服务器是因为我们进行了大量数据库查询和报告编写,并且它提供了与我们支付的价格相当的强大功能。因此,虽然硬件满足了我们的需求,但配置并不适合我们的用例。
希望这能对将来的某人有所帮助。