2011-09-25 98 views
2

我遇到了一個似乎與某個Web服務器配置相關的問題,並導致查詢隨機執行很長時間。該應用程序是使用舊的普通ASP和ADODB連接創建的。使用ADODB連接運行查詢隨機執行需要很長時間

的情況去如下:

  • 有在處理此連接被用於執行對SQL Server查詢每個HTTP請求
  • 年初在腳本中打開一個連接,那位於一個單獨的盒子上。使用conn.Execute。連接沒有被關閉之後
  • 通常有幾個在單個ASP頁幾十conn.Execute的

所有一直很好,直到最近,當一些conn.Execute的開始採取更長的執行時間,完全隨機。

  • 區別在於例如15ms的正常運行時間與2000毫秒的SQL Server端執行時間長
  • ,探查器不顯示較長的查詢執行時間,因此必須有東西擋住了conn.Execute要求

當一個正確的做法在每次執行conn.Execute後關閉連接,問題就會消失。但是,正如我之前所說的,直到最近,所有這些工作一直都是完美無缺的。這個網絡應用程序是一個相當大的應用程序,重寫它關閉和正確地重新打開連接將需要一些時間。我需要一個短期解決方案。

我的猜測是它可能與連接池大小有關,但這不是ADO.NET,因此我不確定連接池問題是否應該納入考慮範圍。在SQL Server端,對服務器的併發連接數沒有限制。

我需要一些提示。集思廣益可能的想法。

+0

提示:我最終發現,當通過系統DNS(ODBC,TCP/IP傳輸)建立連接時,問題就在那裏。當我強制連接字符串中的SQLNCLI提供程序(使用Provider = SQLNCLI)時,問題就消失了。很好,但爲什麼它首先發生......? –

+1

是否有最近的補丁或更新應用於服務器? – Jesse

+0

是的,有。這是由遠程位置的第三方託管和管理的專用盒子。好點,忘了在我原來對問題的描述中加上這個,我以爲我做到了。 –

回答

0

可能與通過DNS解析連接字符串中的主機名有關 - 是否嘗試將IP地址放在連接字符串中而不是主機名?

+0

在連接字符串中更改它會覆蓋使用系統DSN條目,但不,我沒有更改DSN使用IP而不是服務器名稱,但我不認爲這將是問題的原因在這裏,因爲兩個盒子都在同一個網絡中,解析主機名應該被緩存,否則不應該? –

+0

主機名取自/ etc/hosts文件,因此不幸的是,這與解析IP地址無關。 –