Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提高Openfire并发连接限制?_Java_Xmpp_Server_Openfire_Jabberd2 - Fatal编程技术网

Java 如何提高Openfire并发连接限制?

Java 如何提高Openfire并发连接限制?,java,xmpp,server,openfire,jabberd2,Java,Xmpp,Server,Openfire,Jabberd2,我试图测试Openfire可以处理多少并发用户连接。我注意到有4000个用户的限制。如何在Openfire上处理50000个或更多并发连接?应该进行什么配置来处理大量连接 我的服务器配置 出于测试目的,我在virtualbox上使用虚拟服务器设置 情景 我正在测试Openfire 3.9.3,没有连接管理器,也没有SSL。服务器是安装在Virtualbox上的虚拟机,具有3.00GHz处理器和512MB RAM。它是一个标准的Openfire安装,具有最多100个连接的MySQL数据库连接 当使

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

我的服务器配置

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

情景

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

当使用[请注意,我没有设置集群]中的负载测试脚本进行测试时,用户连接的数量稳步增加,直到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配置才能达到同样的效果?

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

另见:


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

另见:


添加到@Flow的答案中

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

错误

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

对我有效的解决方案

当我更新运行测试脚本的计算机的ulimit时,它工作得很好。
我现在可以实现20000个并发连接。

添加到@Flow的答案中

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

错误

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

对我有效的解决方案

当我更新运行测试脚本的计算机的ulimit时,它工作得很好。
我现在可以实现20000个并发连接。

我也尝试过同样的方法,但没有效果。我仍然会犯同样的错误。ulimit设置为20000。您是如何验证ulimit设置的?ulimit-Hn&ulimit-sn您知道这会报告当前用户的ulimit吗?是的。我已经为root和*设置了相同的设置,我尝试了相同的设置,但没有帮助。我仍然会犯同样的错误。ulimit设置为20000。您是如何验证ulimit设置的?ulimit-Hn&ulimit-sn您知道这会报告当前用户的ulimit吗?是的。我已经为root和*
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)