2012-03-06 133 views
0

我打算编写一个小程序,通过并行多个连接来检查IIS服务连接性和统计信息。 IIS服务在NLB服务后面(并且有3种不同的服务)。所以我到目前为止做的是:在C#中编程检查网络负载平衡(NLB)和IIS

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

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

我提到可以检查NLB的检查吗? 如果不是,我如何通过Winforms应用程序检查它?

在此先感谢。

+0

是请求克隆吗?他们有快速反应吗? – Jodrell 2012-03-06 09:10:11

+0

他们有快速的反应,但他们不是克隆... – lionheart 2012-03-06 09:47:07

回答

1

这是NLB的典型行为。它会尝试每次给你同一个主机。你不希望它每次都选择一个随机的服务器。

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

+0

我认为每个请求都是在处理无状态应用程序时自己处理的......它不能在15分钟内发送请求 - 每次都是相同的IIS服务器响应。这意味着NLB无法导航和重定向通过哪个服务器是最可用的,如果它是关于平衡。 – lionheart 2012-03-06 09:51:59

+0

您是否认为我需要在http处理程序中放置sleep(),以使服务器可用于检查目的? – lionheart 2012-03-06 10:11:49

+0

不,这将是一个无用的测试,IIS可能会排队请求。 NLB与机器网络连接相关,而不是IIS可用性以服务于响应。运行测试时,您最好重新启动其中一台服务器。 – Adrian 2012-03-06 10:57:42

1

NLB经理有一个Affinity setting

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