web-dev-qa-db-ja.com

Rabbit Mqが起動しない

新しいCentOs6.6サーバー(rabbitMq 3.4.1、erlangによると17)にRabitMqをインストールしたところ、起動に失敗しました。

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を実行しているようです。私は自分のホスト用の行を持っています。IPアドレスのあるものがありますが、それを削除しても、etc/hostsには役に立ちませんでした。

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を持っているので、ファイアウォールの問題かもしれないと思いましたが、ウサギが4369をポートとして使用しているホスト名にtelnetで接続できました。

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)
3
ArtisticPhoenix

将来の参考のために、私はこの問題を解決しました。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

したがって、206100よりも大きいことを理解するのに天才は必要ありません。そのため、さらに調査を行った結果、この設定のデフォルト値は通常1024であることがわかりました。 /etc/security/limits.confそのファイルで見つけた

 *               hard    nproc           100

それで、rabbitmqユーザーの1024の額に引き上げました

 rabbitmq                 hard    nproc           1024

そして、それはすぐに発砲しました!起動してステータスを確認すると、

 {processes,[{limit,1048576},{used,147}]},

ここでの制限はシステム全体にあると思いますか? erlangプロセスとこれらの他のプロセス番号がどのように関連しているかはまだよくわかりません。

したがって、結論として、erlangが機能するには100プロセスでは不十分です。これはクラウドでホストされるSSAE 16専用のWebサーバーであり、通常、ホスティング会社はこれらをresellers用に設定します。サーバーの一部をファームして、あなたがクライアントのWebサイトをホストすることができます。これが、デフォルトの制限が非常に低く設定されている理由です。このタイプのサーバーを使用するのは、データベースのクエリとレポートの書き込みを数多く行うためです。また、支払いにかなりの力を発揮します。したがって、ハードウェアは私たちのニーズを満たしますが、構成は私たちのユースケースにも適合しません。

うまくいけば、これは将来の誰かを助けることができます。

2
ArtisticPhoenix