2

我被限制在 Ejabberd 节点上让超过大约 64000(准确地说是 64,464)用户在线。我正在使用 xml 脚本(Tsung)使用户在节点上联机。

我已经提高了描述符的限制:

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

一个奇怪的观察结果是(此处将可用端口计数作为整数值):

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

此外,ejabberdctl.cfg 文件中的“ERL_MAX_PORTS”设置为 704500。

ERL_MAX_PORTS=704500

我猜一个 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

除了操作系统的端口限制之外,您还必须配置 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 回答