新しい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)
将来の参考のために、私はこの問題を解決しました。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
それで、rabbitmqユーザーの1024
の額に引き上げました
rabbitmq hard nproc 1024
そして、それはすぐに発砲しました!起動してステータスを確認すると、
{processes,[{limit,1048576},{used,147}]},
ここでの制限はシステム全体にあると思いますか? erlangプロセスとこれらの他のプロセス番号がどのように関連しているかはまだよくわかりません。
したがって、結論として、erlangが機能するには100プロセスでは不十分です。これはクラウドでホストされるSSAE 16専用のWebサーバーであり、通常、ホスティング会社はこれらをresellers
用に設定します。サーバーの一部をファームして、あなたがクライアントのWebサイトをホストすることができます。これが、デフォルトの制限が非常に低く設定されている理由です。このタイプのサーバーを使用するのは、データベースのクエリとレポートの書き込みを数多く行うためです。また、支払いにかなりの力を発揮します。したがって、ハードウェアは私たちのニーズを満たしますが、構成は私たちのユースケースにも適合しません。
うまくいけば、これは将来の誰かを助けることができます。