首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL Server 2005 遠程連線不穩:高流量下連線失敗排查方向

     編輯:程式設計綜合問答

現象

Web 伺服器透過內網 IP 連接資料庫伺服器,流量大時出現連線緩慢、逾時、`[DBNETLIB] SQL Server 不存在或拒絕訪問`。本機連線正常,`telnet IP 1433` 內網多數失敗,公網 IP 卻多數成功。

可能原因

  1. 連線池耗盡:高併發下連線池不足,新連線建立逾時。
  2. 鎖死/阻塞:複雜查詢長時間持有鎖,導致新查詢等待超時。
  3. 網路設備限制:交換器/防火牆對內網大量短連線進行限流或斷開。
  4. SQL Server 設定:`max worker threads`、`remote query timeout` 等參數預設值不足。

建議優化方向

  • 優化查詢與索引:將複雜邏輯封裝為預存程序,分析執行計畫,建立適當索引,減少鎖持有時間。
  • 調整連線池:連接字串加大 `Max Pool Size` (預設 100),確保 `using` 區塊正確釋放連線。
  • 啟用連線重試:使用 `SqlConnection` 的 `ConnectRetryCount` / `ConnectRetryInterval` (ADO.NET 4.5.1+)。
  • 檢查網路層:確認交換器無錯誤封包、防火牆無連線數限制、網卡無錯誤計數器增長。
  • 考慮 Named Pipes:同機器或高速內網環境下,Named Pipes 協定比 TCP/IP 延遲更低、穩定性更高。

避免盲目修改伺服器設定

SQL Server 預設參數已支援大多數場景,優先從應用層(SQL 優化、連線池)著手,風險最小、效果最直接。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved