我們已經看到這個問題一段時間了,我真的試圖圍繞導致它的原因。經歷了SQL Server「超時」和「SQL Server不存在或訪問被拒絕」的經典ASP應用程序
一天幾次我們會看到網頁開始投擲的時間段[微軟] [ODBC SQL Server驅動程序]超時過期「然後不久後頁面開始投擲」[Microsoft] [ODBC SQL Server Driver] [ DBNETLIB] SQL Server不存在或訪問被拒絕。「
我們有很多不同的應用程序連接到這個數據庫服務器。它平均每秒平均有大約2500次併發連接處理。我們的大多數應用程序沒有任何問題,問題似乎只發生在Web服務器上。 (也許它與連接池有關?)
我不知道該怎麼解決這個問題。有問題的SQL服務器對於它所做的工作極其不滿,並且配備了每個處理器的許可。所以我不認爲我們正在考慮許可/性能問題。
我想也許是IP連接問題,所以我改變了ConnectionString使用IP地址並運行一些長時間ping。我在Web服務器和數據庫服務器之間丟失了0個數據包。
的ASP連接字符串現在看起來是這樣的:
Provider=MSDASQL; Driver={SQL Server}; Server=10.0.100.100; Database=DBName; UID=WebUserName; PWD=WebUserPassword; ConnectionTimeout=15; CommandTimeout=120;
用戶使用的是SQL Server身份驗證連接非域用戶。所以我不認爲這是一個與域相關的問題。我檢查了SQL服務器的日誌文件,並沒有發現與事件相關的任何內容。
我找到描述類似行爲的another stackoverflow question,但沒有解析。
的詳細信息:
- 的Web服務器:Windows 2003 SP2標準,IIS 6
- 數據庫服務器:Microsoft SQL Server的9.0.4035
有沒有人見過/解決這類型問題?有沒有人有任何建議,我應該看看下一步?
謝謝!
-Zorlack
編輯
誰能告訴我最好的做法是什麼經典的高負荷ASP執行SQL查詢?我們是否想要嘗試利用連接池?
在看代碼,相當多的是這樣的:
Set objCn = Server.CreateObject("ADODB.Connection")
objCn.Open(Application("RoConnStr"))
'do some stuff
objCn.Close
Set objCn = Nothing
溶液(每斯科特的建議)描述
This article,一個發球,我的問題。我做了註冊表更改,然後重新啓動服務器。
問題解決了!
謝謝,我也有這個問題。 雖然它看起來像連接池是紅色的鯡魚。當我使用和不使用連接池進行測試時,服務器仍然創建了數千個處於TIME_WAIT狀態的TCP連接。 看起來連接池允許您重新使用連接對象,但這些連接對象有時會在服務器之間創建許多新的TCP連接。 – 2011-06-13 11:11:51