2

私は、Ejabberd ノードで約 64000 (正確には 64,464) を超えるユーザーをオンラインにするように制限されています。xml スクリプト (Tsung) を使用して、ノードでユーザーをオンラインにしています。

私はすでに記述子の制限を引き上げました:

Eshell V5.10.4  (abort with ^G)
1> os:cmd("ulimit -n").
"1045000\n"

1 つの奇妙な観察結果は次のとおりです (ここでは、使用可能なポート数を整数値として期待します)。

2> os:getenv("ERL_MAX_PORTS").
false

また、ejabberdctl.cfg ファイルの「ERL_MAX_PORTS」は 704500 に設定されています。

ERL_MAX_PORTS=704500

1 つの Ejabberd ノードには、オンラインにできる最大ユーザー数に制限があると思います。これは、マシンまたは何かに依存するメモリである可能性があります。

さらに、これは /etc/security/limits.conf がどのように見えるかです:

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50   
#ftp             hard    nproc           0
#@student        -       maxlogins       4
root             soft    nofile          1045000
root             hard    nofile          1045000

次のように、同じ Linux マシンで実行する別の仮想ホストを作成して試してみることができます。

hosts:
  - "devlab"
  - "devlab2"

しかし、これがどのように異なるかはわかりません。

ポインタをいただければ幸いです。

ありがとう!

4

1 に答える 1

2

OS のポート制限とは別に、erlang のポート制限も設定する必要があります。これは、 +Q 引数を指定して erlang vm を開始することで実行できます (詳細情報)。

+Q Number|legacy Number が値として渡される場合、このシステムに同時に存在するポートの最大数を設定します。Number の有効な範囲は [1024-134217727] です。

例: erl +Q 704500

eshell で次のコマンドを使用して、erlang ポートの制限を確認できます。

erlang:system_info(port_limit)
于 2015-08-08T21:02:09.917 に答える