2015-08-20 66 views
0

我有2个centOS-7机器说机器A,B。 机器A有一个侦听端口80的服务器。当我在同一台机器上运行每秒2000个请求的curl-loader(用于负载测试目的)时,所有请求都打到服务器,我检查了'ss -s'命令并打开TCP套接字超过2000.无法与服务器建立TCP连接

但我的问题是,当我在机器B中运行curl-loader并尝试命中服务器时,只有少数请求到达服务器,剩下的全部都退出了。 在机器B'ss -s'命令中返回2K +值。但在机器中'ss -s'命令将只返回值25-30。剩余的所有请求都返回TCP-CONNECT错误

+0

该服务器的声音受到限制。在许多情况下,保护系统免受过载是有道理的。例如,如果该服务器是一个http服务器,则有一个max_connections配置指令。您将不得不分享更多细节,以便我们提供更具体的帮助。 – arkascha

+0

对不起,我忘了在我的问题中提到这一点。我的服务器是squid代理服务器,没有最大连接限制。当我从同一台机器上打鱿鱼时,所有的请求都被送达,但是从另一台机器上所有的请求都没有到达。 正如我在上面提到的在我的问题时,请求来自另一台机器没有足够的套接字打开 –

+0

然后,指向网络级别的节流,所以通过包过滤器(“防火墙”)。同样的动机,不同的水平。 – arkascha

回答

0

@arkascha可能是正确的。一些节流正在发生。我只会补充说,限制可能在网络中,在服务器中或在客户端。它们中的任何一个都可能会限制连接的数量。

最好不用任何鱿鱼或高级软件进行测试。你可以这样做:

(在服务器上)$ echo hello | nc -l -k 10000

(在客户端)$ for((i = 0; i < 2000; i ++)); do nc:10000 & done

这将在端口10000上的服务器机器上创建一个“mini”TCP服务器。连接到该服务器的任何人都将收到消息“hello”。

然后从客户端,你可以在端口10000

创建服务器2000(几乎同时)的TCP连接。如果连接成功建立,那么节流大概是“代理”的水平。如果连接出现节流,那么节流可能位于防火墙或网络级别。

相关问题