1

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

我的服务器配置

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

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

设想

我正在测试没有连接管理器且没有 SSL 的 Openfire 3.9.3(还)。该服务器是 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 配置?

4

2 回答 2

7

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

也可以看看:

于 2014-12-31T10:35:42.553 回答
1

添加到@Flow的答案...

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

错误

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

对我有用的解决方案

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

于 2015-01-05T09:37:53.307 回答