如何增加Openfire并发连接限制?

时间:2014-12-31 09:17:30

标签: java xmpp server openfire jabberd2

我正在尝试测试 Openfire 可以处理的并发用户连接数。我注意到 4000 用户的限制。如何在Openfire上处理 50000 并发连接或更多?应该采取什么配置来处理大量连接。

我的服务器配置

OS - Ubuntu Server 14.04.1 64 bit
Processor - 3.00 GHz
RAM - 512 MB
Openfire Version - 3.9.3

出于测试目的,我在虚拟机上使用虚拟服务器设置。

方案

我正在测试Openfire 3.9.3,没有连接管理器,也没有SSL(还)。该服务器是Virtualbox上的虚拟机设置,具有3.00GHz处理器和512MB RAM。它是标准的Openfire安装,具有MySQL数据库连接,最大连接数为100。

使用https://community.igniterealtime.org/docs/DOC-1232的负载测试脚本进行测试时[请注意我没有设置群集],用户连接数量稳定增加,直到4000个并发用户连接。连接4000个用户后,所有连接都会开始丢失,直到所有连接都丢失,并且出现如下错误:

java.net.SocketException: Too many open files
at java.net.Socket.createImpl(Socket.java:460)
at java.net.Socket.<init>(Socket.java:431)
at java.net.Socket.<init>(Socket.java:211)
at OpenfireClusterStressTest.testMultipleLogin(OpenfireClusterStressTest.java:111)
at OpenfireClusterStressTest.main(OpenfireClusterStressTest.java:46)

问题

无法处理超过4000个并发用户连接。如何增加这个限制? 需要什么openfire配置来实现同样的目标?

2 个答案:

答案 0 :(得分:7)

您没有达到Openfire强加的限制。类Unix系统限制了打开文件句柄的最大数量,这包括一个进程可以拥有的(TCP)套接字。您需要设置一个更高的限制(它似乎当前设置为4000左右)。通常使用ulimit命令修改限制。

另见:

答案 1 :(得分:1)

添加@Flow&#39的回答......

如果您尝试从另一台计算机连接,那么您也必须增加该计算机的ulimit。

错误

我提高了打开文件的最大数量限制。 但是,我试图从另一台计算机连接,并将ulimit设置为默认值。 因此,测试将在达到4000个连接时失败。

适用于我的解决方案

当我更新运行测试脚本的计算机的ulimit时,它运行正常。 我现在能够实现20000个并发连接。