Sql-Server

對 AG 進行壓力測試時出現奇怪的錯誤

  • October 4, 2018

在嘗試對遇到 AG 的應用程序進行壓力測試時,我們遇到了一個奇怪的錯誤。如果我們將應用程序直接指向主伺服器,我們不會發現測試有任何問題。但是,如果您將應用程序指向偵聽器,我們會收到以下錯誤:

提供者:TCP 提供者,錯誤: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。

我們不知道為什麼在通過偵聽器但不直接訪問伺服器時會發生這種情況。我們還注意到其他一些地方也發生了這種情況。

所以對我們來說,修復實際上是在應用層中進行一些更改。我們將空閒時間從 4 分鐘減少到 5 秒,並將 maxTCP 連接增加到 65000。

我們使用這個 powershell 進行了更改:

Function ApplyRegChange {
Param ($RegistryPath, $Name, $Value)

IF(!(Test-Path $RegistryPath))

 {

   New-Item -Path $RegistryPath -Force | Out-Null

   New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value ` -Force -PropertyType DWORD -Force | Out-Null
   }

ELSE {

   New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value ` -PropertyType DWORD -Force | Out-Null
   }

}


ApplyRegChange "hklm:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" "TcpTimedWaitDelay" "5"
ApplyRegChange "hklm:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" "MaxUserPort" "65500"

如果我們將應用程序直接指向主伺服器,我們不會發現測試有任何問題。

聽起來像是為偵聽器選擇的名稱有問題…

錯誤:0 - 您未連接,因為網路上存在重複名稱。如果加入域,請進入控制面板中的系統更改電腦名稱,然後重試。如果加入工作組,請選擇另一個工作組名稱。

這告訴我活動目錄中很可能有一個重複的名稱,該名稱是在此之後添加的。您需要檢查 AD 是否有重複項並找到該伺服器或項目。它可能被禁用,處於奇怪狀態,或者可能已經被刪除。在 AD 中,如果添加了另一個具有相同名稱的電腦對象(成功),那麼它將用新的電腦對象覆蓋 AD 數據庫中的 SID,並為舊的電腦對象提供此錯誤。當新的被刪除、重命名或刪除時,舊的不會發生任何事情,因此需要重新添加。在這種情況下,雖然我希望創建錯誤,但重新創建了偵聽器……

我們已經仔細檢查,所有 WFC 設置似乎都很好,我們在網路上找不到任何重複的 IP。

對,錯誤是專門談論NAME,而不是IP。

引用自:https://dba.stackexchange.com/questions/216218