在尝试对我们的应用程序进行压力测试时,我们遇到了一个奇怪的错误。如果我们将应用程序直接指向主服务器,我们不会发现任何测试问题。但是,如果您将应用程序指向侦听器,我们会收到此错误:
provider: TCP Provider, error: 0 - 您没有连接,因为网络上存在重复名称。如果加入域,请转到控制面板中的系统更改计算机名称,然后重试。如果加入工作组,请选择另一个工作组名称。
我们的连接字符串类似于:
> connection string= "data source=DB_C_Name; MultiSubnetFailover=True;
> initial catalog=DBName; integrated security=True;
> MultipleActiveResultSets=True; App=EntityFramework;"
DB_C_Name 是指向监听器的 AD CName,监听器又指向 WFC。
我们已经仔细检查过,所有 WFC 设置似乎都没有问题,我们在我们的网络上找不到任何重复的 IP。
我们不知道为什么在通过侦听器而不是直接进入服务器时会发生这种情况。我们还注意到其他几个地方也发生了这种情况。
听起来像是为 Listener 选择的名称有问题......
这告诉我在活动目录中很可能有一个重复的名称是在这个名称之后添加的。您需要检查 AD 是否有重复项并找到该服务器或项目。它可能被禁用,处于奇怪的状态,或者可能已经被删除。在 AD 中,如果另一个计算机对象添加了相同的名称(成功),那么它将用新计算机对象覆盖 AD 数据库中的 SID,并为旧计算机对象提供此错误。当新的被删除、重命名或删除时,旧的不会发生任何变化,因此需要重新添加它。在这种情况下,虽然我希望创建会出错,但会重新创建侦听器......
是的,错误是专门谈论 NAME,而不是 IP。
所以我们的修复实际上是在应用程序层中进行一些更改。我们将空闲时间从 4 分钟减少到 5 秒,并将 maxTCP 连接数增加到 65000。
我们使用这个 powershell 进行了更改: