7

背景追查數據庫連接問題

我們有一些在連接到一個數據庫服務器不同的Web服務器的Web應用程序。在過去的幾個月中,我們注意到我們的網絡服務器每隔一段時間都將無法連接到數據庫服務器。

我們的環境

我們有幾個不同的網絡環境中,某些運行ColdFusion和其他運行.NET。 .NET應用程序既是Web窗體又是MVC。他們跨越2.0到4.5的多個版本。 ColdFusion和.NET Web服務器都是基於Windows的機器。 ColdFusion和.NET Web環境都是集羣化的,一些機器是物理的,而其他的則是虛擬的。

我們的數據庫服務器是SQL Server 2008 R2。它包含多個數據庫。每個應用程序都有自己的數據庫用戶,它連接到只允許訪問特定數據庫的服務器。

其他事實

  • 當我們發現問題,它們發生在任何地方持續從幾秒鐘到幾分鐘短時間。
  • 當我們發現問題時,突發包含來自多個不同應用的錯誤,而不僅僅是一次應用。
  • 當我們發現問題時,突發包含來自不同Web環境的應用程序的錯誤。 (這使我們認爲我們可以排除這些應用程序本身就是問題)
  • 連接問題突發在白天和黑夜的各個時間發生。它們並不總是在使用率高的時候。
  • 我們已經監控過用戶連接數量,內存,IO,CPU使用情況等等,而且我們還沒有看到可能指出問題的尖峯或其他事情。
  • 我們已經在網絡和數據庫服務器上安裝wireshark,希望能夠在沒有任何成功的情況下捕獲問題。

問題

  1. 沒有人有我應該尋找下一個地方的建議?
  2. 是否有可能導致此問題的數據庫屬性?
  3. 有什麼方法可以更好地「監視」數據庫和Web服務器之間的連接嗎?
  4. 有什麼可以在應用程序方面做更好地瞭解發生了什麼?

錯誤的應用程序

  • .NET錯誤陷入
    • 與網絡相關的或在與SQL Server建立連接時出現特定實例的錯誤。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (提供程序:命名管道提供程序,錯誤:40 - 無法打開與SQL Server的連接)
    • 超時已過期。操作完成之前超時的時間或服務器沒有響應。
    • 從服務器接收結果時發生傳輸級錯誤。 (提供程序:TCP提供程序,錯誤:0 - 信號量超時期限已過。)
    • 超時已過期。在從池中獲取連接之前已超時。發生這種情況的原因可能是因爲所有連接池都在使用中,並且達到最大池大小。
  • ColdFusion的錯誤
    • 錯誤執行數據庫查詢。到主機的TCP/IP連接失敗。 java.net.ConnectException:連接超時:連接
      錯誤發生在第38行。
    • 執行數據庫查詢時出錯。由對等方重置的連接:套接字寫入錯誤
      91行發生錯誤。
    • 執行數據庫查詢時出錯。超時試圖建立連接
      上線38
+1

這聽起來更像是網絡連接問題,而不是數據庫問題。 –

+0

這聽起來像是網卡,交換機,路由器,線纜等的網絡問題。 –

+0

什麼是最好的方式*知道*肯定或追蹤它? – Jason

回答

1

發生錯誤在CF,我曾經有過像你看到的一個問題。我在一臺服務器上安裝了CF,而在另一臺服務器上安裝了SQL 2008 R2。我會看到像你在下面發佈的CF錯誤。爲了幫助它追蹤到我寫的是這樣的一個網絡錯誤:

1)創建的down.bat

tracert命令SERVERIP

2)然後我把周圍的查詢。

當查詢產生的錯誤我將執行

<cfmail to="ME" from="Server" subject="SQL DOWN"> 

    Server Debugging Info: 
    ------------------------------------------------------------  
    #now()# 

    #cfcatch.Detail# 

    #cfcatch.Message# 

    #log#   

    </cfmail> 

這幫助我解決我的情況該結束了在數據中心硬件。