Ejabberd 将在线用户数限制为 64,464。描述符已经增加

Posted

技术标签:

【中文标题】Ejabberd 将在线用户数限制为 64,464。描述符已经增加【英文标题】:Ejabberd limits online users count at 64,464. Descriptors already increased 【发布时间】:2015-07-05 12:10:06 【问题描述】:

我被限制在 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"

但我不确定这会有什么不同。

指针将不胜感激。

谢谢!

【问题讨论】:

检查您的 /var/log/syslog 信息。 这就是我系统中的全部内容。 [root@Test ~]# cd /var/log/syslog -bash: cd: /var/log/syslog: 没有这样的文件或目录 [root@Test ~]# find / -name syslog /etc/logrotate.d/系统日志 tail -f /var/log/syslog 该位置不存在此类文件。我必须提到,我使用的是 RHEL 6。 [root@Test bin]# tail -f /var/log/syslog tail: 无法打开 `/var/log/syslog' 进行阅读:没有这样的文件或目录 好吧,我猜需要在某处查看 /var/log/messages。 检查你的操作系统的 /var/log 目录并理解它。检查操作系统的 sysctl.conf 文件并控制操作系统的限制。 【参考方案1】:

除了操作系统的端口限制外,您还必须配置 erlang 端口限制。这可以通过使用 +Q 参数 (further information) 启动 erlang vm 来完成。

+Q 号码|旧版 如果 Number 作为值传递,则设置此系统同时存在的端口的最大数量。 Number的有效范围是[1024-134217727]

例如:erl +Q 704500

您可以在 eshell 中使用以下命令检查 erlang 端口限制:

erlang:system_info(port_limit)

【讨论】:

以上是关于Ejabberd 将在线用户数限制为 64,464。描述符已经增加的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 使用 ejabberd 获取在线用户列表?

使用 ejabberd 实现群聊 [关闭]

如何在 ejabberd/XMPP 中获取所有在线用户的列表?

使用 ejabberd 进行限时聊天

Ejabberd 限制用户注册权限

关于ejabberd限制单点登录