我们目前遇到了用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() –