2014-03-26 48 views
0

首先,我想先說一些關於這個問題的細節可能有點含糊,因爲它涉及到商業代碼,我顯然不能在這裏透露。但無論如何,這裏都是。使用COM對象的經典ASP頁面非常慢

我目前正在處理基於.Net的Web應用程序,該應用程序在某些領域也具有經典ASP頁面 - 此應用程序具有後端MSSQL數據庫。應用程序的傳統ASP區域的數據訪問由添加到IIS服務器上的組件服務中的32位DLL處理。該應用程序最近已更改,所以所有組件(IIS身份驗證,.Net應用程序池和添加到組件服務的數據訪問DLL)現在都在單個Windows帳戶下運行。

我最近發現的問題是,雖然.Net數據訪問數據庫時運行速度非常正常,但通過COM +組件傳輸的經典ASP數據訪問非常緩慢。不幸的是,這似乎並沒有在任何地方拋出任何錯誤,而不是在IIS日誌中而不是在事件查看器中。

COM +組件是以標準方式實例化的,這是在任何需要數據訪問的ASP頁面引用的包含文件中完成的,例如。

var objDataProvider = Server.CreateObject("DataAccess.DataProvider"); 

然後ASP頁面使用COM +中的方法來執行查詢,例如;

objDataProvider.Query(...) 
objDataProvider.Exec(...) 

我已經啓用失敗請求跟蹤IIS對於正在服用時間超過20秒來處理,可以看到,大部分的呼叫正在處理的記錄集作爲在下面的例子中看到任何ASP頁。

if(rsri.EOF) 

theReturn = rsData(0); 

上述兩者的兩個例子接管787-9來運行。對在後臺運行的SQL進行性能分析表明,這種情況在毫秒級內運行,這表明問題在於COM +將數據返回給ASP,或者ASP處理緩慢。

  • 的Windows Server 2008 R2 SP1(64位)
  • 英特爾至強CPU
  • 2GB RAM

任何人都經歷了類似的情況,在此之前還是能夠指出我的方向任何進一步的診斷可能有幫助?

+0

您是否使用過SQL Profiler來查看針對數據庫正在執行的查詢? – Donal

+0

我有 - 如問題中所述,SQL查詢在毫秒內運行並返回預期數據。在某些情況下,這是一行數據,然後通過引用該集合中的第一條記錄,即在ASP代碼中進行處理。 'theReturn = rsData(0);' – tominyorks421

回答

0

經過幾天的磨合,我終於找到了答案,這是通過迴歸基礎知識解決的最簡單的問題。

承載應用程序的Web服務器位於DMZ中,並且需要SQL服務器的主機文件條目。一旦添加完成,應用程序再次飛行。

0

我在同一個問題。我已經從W2003-SQL express 2005將iis服務器遷移到W2012R2-SQL Server 2014 express,並且asp腳本速度降低了2倍。 裏面的sql查詢以相同或更好的速度執行,我在本地測試服務器以丟棄帶寬問題。我認爲這可能是一個DNS問題。

你在hosts文件中做了什麼改變?和,你使用了什麼SQL字符串連接或連接類型? 謝謝

+0

我簡單地添加了一個包含數據庫服務器的DNS名稱和IP地址的條目。例如。 '192.168.0.1 SERVERNAME.DOMAIN.LOCAL' – tominyorks421