首先,我想先說一些關於這個問題的細節可能有點含糊,因爲它涉及到商業代碼,我顯然不能在這裏透露。但無論如何,這裏都是。使用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
任何人都經歷了類似的情況,在此之前還是能夠指出我的方向任何進一步的診斷可能有幫助?
您是否使用過SQL Profiler來查看針對數據庫正在執行的查詢? – Donal
我有 - 如問題中所述,SQL查詢在毫秒內運行並返回預期數據。在某些情況下,這是一行數據,然後通過引用該集合中的第一條記錄,即在ASP代碼中進行處理。 'theReturn = rsData(0);' – tominyorks421