如何找到服务器可以处理的最大并发连接数?

时间:2010-02-26 12:56:39

标签: java sockets networking

我想要一个java程序,它可以找到服务器可以处理的最大并发连接数吗?

您可以假设服务器是http服务器。

更清楚:

有很多开源NIO框架。我想为我的项目选择一个。并且想要测试哪个实现支持最​​大并发连接数。其中一些框架声称它们支持这些框架。但我想在选择之前自己验证一下。

我的意图是支持尽可能多的并发连接而不删除/拒绝客户端?

5 个答案:

答案 0 :(得分:2)

我们之前制作了一台COMET服务器,在测试它可以支持的最大连接数时遇到了很大的麻烦。我们总是发现办公室网络设备在我们接近使其呻吟的连接数量之前的任何地方都失败了。生成请求的计算机上的端口数量有限,在重用之前需要一段时间才能清除。确实是一个棘手的问题。

答案 1 :(得分:1)

只需创建套接字,直到收到错误“连接被拒绝”或程序将在new Socket()中阻止,或者您在5xx范围内获得HTTP error(通常为503 Service Unavailable)。

请注意,您只应对内部测试执行此操作,因为这是拒绝服务攻击。

答案 2 :(得分:1)

在apache tomcat中,最大连接存储在“context.xml”文件中

答案 3 :(得分:1)

开始新的连接;当你被拒绝新的时候,你已经达到某种程度的限制。

然而,结果将无法准确

  • 服务器可能对每个IP地址进行限制
  • 服务器可以同时处理的连接数可能取决于服务器负载
  • 当您尽快开始连接服务器时,您可能会受到自己连接的限制
  • 某些服务器具有禁止您的自动规则(在镜头时间内打开过多连接时丢弃所有流量)
  • 另外,您的计算机的网络堆栈可能对传出连接有一些限制(特别是Win XP曾经有过这样的限制)
  • 如果TCP连接通过任何一种NAT,一些更简单的设备(例如SoHo类路由器可能会遇到其固有的限制 - 连接NAT表中的插槽等)。

此外,您的测试相当于DoS攻击,因此始终获得服务器所有者和其他相关方(例如您的ISP,服务器托管的ISP等)的许可并在开始之前通知他们试验。否则你可能会发现自己处于诉讼的传入方面。

答案 4 :(得分:1)

使用Apache JMeter之类的工具来执行服务器的load testing。您需要在多台客户端计算机上运行JMeter工具:正如其他人提到的,各种操作系统对连接有限制。它支持包括并发连接数等选项......

上次使用此工具加载测试网站时,我们有6台客户端计算机针对一台服务器运行JMeter。该死的,给了网络一个锤子!