【问题标题】:Checking Network Load Balancing (NLB) and IIS programatically in C#在 C# 中以编程方式检查网络负载平衡 (NLB) 和 IIS
【发布时间】:2012-03-23 17:58:18
【问题描述】:

我打算写一个小程序,通过多个并行连接来检查IIS服务的连通性和统计信息。 IIS 服务落后于 NLB 服务(并且有 3 个不同的服务)。所以到目前为止我所做的是:

  1. 创建一个返回当前 IIS 服务器名称的 http 处理程序。
  2. 在向 NLB 发送请求的 WinForms 应用程序中创建小型 HTTP 客户端。在这个客户端中:一系列 100 个并行请求通过 WebClient 对象被发送到 NLB 服务。

结果:当我向 NLB 发送请求时,总是单个 IIS 服务器响应。当我尝试专门将 URI 更改为 IIS 服务器时 - 每个服务器都根据自己的请求进行响应。现在,我认为这意味着 NLB 没有做它应该做的事情,因为它总是导航到同一个服务器(对于每次运行,单个服务器的答案 - 它可以改变,但不是为了运行)。

我提到的支票对于检查 NLB 是否可信? 如果没有,如何通过 Winforms 应用程序查看?

提前致谢。

【问题讨论】:

  • 请求是克隆的吗?他们的反应快吗?
  • 他们反应很快,但不是克隆人……

标签: c# windows-server-2008 asp.net-4.0 nlb


【解决方案1】:

这是 NLB 的典型行为。它每次都会尝试为您提供相同的主机。您不希望它每次都选择随机服务器。

通过检查 IIS 服务器日志、性能计数器或内置监控例程,您将获得更多有用的信息。

【讨论】:

  • 我认为每个请求都是独立处理的,在谈论无状态应用程序时...不可能在 15 分钟内发送请求 - 每次相同的 IIS 服务器响应。这意味着 NLB 不会导航和重定向哪个服务器是最可用的,如果它是关于平衡的。
  • 你认为我需要将 sleep() 放在 http 处理程序上,以减少服务器可用于检查目的吗?
  • 不,这将是一个无用的测试,IIS 可能无论如何都会对请求进行排队。 NLB 与机器网络连接有关,而不是 IIS 是否可以提供响应。您最好在运行测试时重新启动其中一台服务器。
  • 有没有办法让运行测试应用程序的(单台)计算机将自己模拟为其他计算机,从而使 NLB 和 IIS 更适合测试?这就像来自其他计算机的多个请求,并将检查我需要检查的内容......我无法相信没有办法知道 NLB 在生产中对多个请求的反应。 Microsoft Windows Server 2008 没有用于 NLB 导航的内置计数器。所以我想创建一个计算它并为 NLB 性能创建统计报告的 spplication。
  • 是的 - 您使用一种称为 IP 欺骗的技术,一个专门构建的应用程序可以将计算机配置为使用多个 IP 地址和来自每个的欺骗请求。这通常最好留给网络工程师! - 有一些工具可以为您做到这一点。 VS2010 有负载测试包——这是从 MS 上买来的。这里列出了其他人:microsoft.com/visualstudio/en-us/products/2010-editions/… 由于这是与服务器相关的,您可能想尝试在 serverfault.com 上询问
【解决方案2】:

NLB 管理器中有一个Affinity setting

将此设置从单个更改为无,并检查请求每次都发送到不同的服务器。

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 2011-02-11
    • 2021-02-21
    • 2014-04-18
    • 1970-01-01
    • 2010-12-21
    • 2014-01-03
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多