Ejabberd iex live выдает "плохое значение"K: ошибка
Я установил ejabberd
правильно (я настраиваю это с --enabled-all
без ошибок. Но когда я хочу запустить его в режиме эликсира, я получаю эту ошибку:
# ejabberdctl iexlive
bad "K" value: \
Usage: beam.smp [flags] [ -- [init_args] ]
The flags are:
-a size suggested stack size in kilo words for threads
in the async-thread pool, valid range is [16-8192]
-A number set number of threads in async thread pool,
valid range is [0-1024]
-B[c|d|i] c to have Ctrl-c interrupt the Erlang shell,
d (or no extra option) to disable the break
handler, i to ignore break signals
-c bool enable or disable time correction
-C mode set time warp mode; valid modes are:
no_time_warp|single_time_warp|multi_time_warp
-d don't write a crash dump for internally detected errors
(halt(String) will still produce a crash dump)
-fn[u|a|l] Control how filenames are interpreted
-hms size set minimum heap size in words (default 233)
-hmbs size set minimum binary virtual heap size in words (default 32768)
-hpds size initial process dictionary size (default 10)
-K boolean enable or disable kernel poll
-n[s|a|d] Control behavior of signals to ports
Note that this flag is deprecated!
-M<X> <Y> memory allocator switches,
see the erts_alloc(3) documentation for more info.
-pc <set> Control what characters are considered printable (default latin1)
-P number set maximum number of processes on this node,
valid range is [1024-134217727]
-Q number set maximum number of ports on this node,
valid range is [1024-134217727]
-R number set compatibility release number,
valid range [16-18]
-r force ets memory block to be moved on realloc
-rg amount set reader groups limit
-sbt type set scheduler bind type, valid types are:
-stbt type u|ns|ts|ps|s|nnts|nnps|tnnps|db
-sbwt val set scheduler busy wait threshold, valid values are:
none|very_short|short|medium|long|very_long.
-scl bool enable/disable compaction of scheduler load,
see the erl(1) documentation for more info.
-sct cput set cpu topology,
see the erl(1) documentation for more info.
-secio bool enable/disable eager check I/O scheduling,
see the erl(1) documentation for more info.
-sub bool enable/disable scheduler utilization balancing,
see the erl(1) documentation for more info.
-sws val set scheduler wakeup strategy, valid values are:
default|legacy.
-swct val set scheduler wake cleanup threshold, valid values are:
very_lazy|lazy|medium|eager|very_eager.
-swt val set scheduler wakeup threshold, valid values are:
very_low|low|medium|high|very_high.
-sss size suggested stack size in kilo words for scheduler threads,
valid range is [4-8192]
-spp Bool set port parallelism scheduling hint
-S n1:n2 set number of schedulers (n1), and number of
schedulers online (n2), maximum for both
numbers is 1024
-SP p1:p2 specify schedulers (p1) and schedulers online (p2)
as percentages of logical processors configured and logical
processors available, respectively
-t size set the maximum number of atoms the emulator can handle
valid range is [8192-0]
-T number set modified timing level, valid range is [0-9]
-V print Erlang version
-v turn on chatty mode (GCs will be reported etc)
-W<i|w|e> set error logger warnings mapping,
see error_logger documentation for details
-zdbbl size set the distribution buffer busy limit in kilobytes
valid range is [1-2097151]
-zdntgc time set delayed node table gc in seconds
valid values are infinity or intergers in the range [0-100000000]
Note that if the emulator is started with erlexec (typically
from the erl script), these flags should be specified with +.
Я могу правильно запустить сервер ejabberd. Я создал пользователя, и все прошло хорошо. Я не знаю, что происходит не так.
Мой конфиг Elixir 1.1.1
а также Erlang R18
,
Любой комментарий приветствуется.
ОБНОВЛЕНИЕ 1
Я не передавал никаких аргументов этому. Я сделал следующее:
Загрузите исходный файл и распакуйте его.
./autogen
затем./configure --enable-all
затемmake && make install
- Все прошло гладко. Я могу запустить запустить успешно и остановить его успешно. Также я могу запустить его в режиме реального времени (
ejabberdctl live
).
Проблема в том, когда я сталкиваюсь с этим ejabberdctl iexlive
, Прежде чем загрузить ejabberd
Я установил Elixir 1.1.1
, Я не знаю, может быть, в этом проблема.
ОБНОВЛЕНИЕ 2
Я прошел через код ejabberdctl
и я нашел проблему в этой строке кода:
ERLANG_OPTS=" +K $POLL -smp $SMP +P $ERL_PROCESSES $ERL_OPTIONS"
Я изменяю это на
ERLANG_OPTS=""
И это сработало. Но я не знаю, это создаст какие-то проблемы или нет. Я открою вопрос в их хранилище.
1 ответ
Это потому что $POLL
переменная в +K $POLL
не был правильно инициализирован. +K
флаг включает или отключает функцию опроса ядра для Erlang VM, и его допустимые значения true
или же false
,
ejabberdctl
сценарий оболочки имеет некоторые значения по умолчанию для $POLL
и другие варианты Erlang VM. Также он использует ejabberdctl.cfg
файл конфигурации и перезаписывает значения по умолчанию теми, которые включены в этот файл конфигурации.
Вы должны использовать ejabberdctl.cfg
установить желаемые параметры, раскомментировав их следующим образом:
#' POLL: Kernel polling ([true|false])
#
# The kernel polling option requires support in the kernel.
# Additionally, you need to enable this feature while compiling Erlang.
#
# Default: true
#
POLL=true
#.
#' SMP: SMP support ([enable|auto|disable])
#
# Explanation in Erlang/OTP documentation:
# enable: starts the Erlang runtime system with SMP support enabled.
# This may fail if no runtime system with SMP support is available.
# auto: starts the Erlang runtime system with SMP support enabled if it
# is available and more than one logical processor are detected.
# disable: starts a runtime system without SMP support.
#
# Default: enable
#
SMP=enable
Этот файл находится на $ejabberd-installed-path/conf
если вы установили ejabberd вручную.