【问题标题】:NLB ConcurrencyNLB 并发
【发布时间】:2013-10-01 09:06:51
【问题描述】:

我在 NLB 集群上有 3 台服务器,并部署了一个无状态的重运行 WCF 服务来给集群施加压力。

配置为:端口 80,组播,关联:无

然后我从我的工作站向集群发出 32 个并行请求,完成 32 个请求的总时间约为 35 秒。

我尝试关闭 2 台服务器,再次运行服务,最终结果也是大约 ... 35 秒 !!!?!?!?

当同时查看这 3 台服务器上的任务管理器时,我发现请求是按顺序处理的,如果 1 台服务器正在处理请求,则另外 2 台服务器将处于空闲状态。我认为请求应该在所有 3 台服务器上并行处理。

我不知道发生了什么。我配置错了吗? 有人对此有解释吗?

【问题讨论】:

    标签: wcf concurrency nlb


    【解决方案1】:

    根据 NLB 文档:

    如果您的 Affinity 设置为 Single 或 Class C,则来自单个 IP 的请求应路由到集群中的单个主机。但是,如果您将 Affinity 设置为 None,它应该将请求路由到所有主机。

    实际上,我看到了与您相同的问题。我们在一个集群中有多个服务器,关联性设置为无,来自单个 IP 的所有请求仍然被路由以保存主机。我还在寻找答案。

    【讨论】:

    • 看看下面我的回答。我设置了 3 个客户端来测试 NLB 集群,并将请求分成 3 个服务器并并行处理
    【解决方案2】:

    最后,我自己找到了答案。

    NLB 集群根据客户端的 IP 决定服务请求的主机,一次只分配 1 台服务器来处理来自 1 个客户端 IP 的所有请求。

    我的所有请求都是并行发送的,但只有 1 个 IP;因此,只分配了一台服务器来处理所有这些请求。

    当尝试从 2 或 3 个客户端发送请求时,我看到其他服务器开始并行工作。

    这正是 NLB 的工作方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      相关资源
      最近更新 更多