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 获取在线用户列表?