我們目前遇到了用ASP.NET MVC 4編寫的網站的性能問題,特別是Linq-to-SQL的開銷,從而導致(其中包括)CPU跳轉到對於使用Linq-to-SQL的每個頁面請求,100%。Linq-to-SQL開銷
我正在使用ANTS Performance Profiler 8.5 Pro分析應用程序,並在開發和生產環境中體驗到相同的結果。然而,生產環境中的性能比開發環境中的性能差得多。
通過螞蟻我似乎已經縮小到高架實例LINQ到SQL數據上下文和執行例如像一個非常簡單的查詢時:
using (var db = new D.DataClassesDataContext(ConfigurationManager.ConnectionStrings["Master"].ConnectionString))
{
db.ObjectTrackingEnabled = false;
HttpContext.Cache["WebPageTemplateCapabilities"] = (from x in db.Clients
where x.ClientID == this.ClientID
select x.WebPageTemplateCapabilities).SingleOrDefault();
}
我不能爲我的生活弄清楚爲什麼一個簡單的查詢會導致這樣的性能下降。這段代碼片段最多需要1.5秒才能運行,與SSMS中執行的相同查詢相比,這是瘋狂的。我在這一點上假設高CPU使用率可能是由本網站進行的任何數據庫通信的結果。
我錯過了什麼?這是爲了記錄在網站生命週期中實例化和查詢所執行的第一個數據上下文。
如何以及在何處調用此代碼? – Andrei
它構成了一個對象的構造函數,它首先通過基本控制器中另一個對象的實例化來實例化。 – Maritim
您是否嘗試明確管理連接? (這可以防止可能的連接池),例如db.Connection.Open()和db.Connection.Close() –