Только что установил RabitMq на новый сервер CentOs6.6 (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
. У меня есть строка для моего хоста, есть одна с 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, поэтому я подумал, что это может быть проблема с брандмауэром, но я могу успешно telnet к имени хоста, которое кролик использует с 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)
Для справки в будущем я решил проблему с некоторой помощью сообщества 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
, т.е. вы можете отдать часть сервера на сервер для размещения веб-сайтов ваших клиентов. Скорее всего, поэтому они установили такой низкий лимит по умолчанию. Мы используем этот тип сервера, потому что мы делаем много запросов к базе данных и написания отчетов, и он предлагает изрядную мощность за то, что мы платим. Таким образом, хотя оборудование соответствует нашим потребностям, конфигурация также не подходит для нашего варианта использования.
Надеюсь, это поможет кому-то в будущем.