SQL Server 2014 Express和实体框架的超时问题

问题描述 投票:0回答:1

我最近更换了笔记本电脑,我不得不使用Management Studio安装Visual Studio 2015和SQL Server 2014 Express。

我之前的环境是带有Management Studio的SQL Server 2008 R2 Express的Visual Studio 2015。

我将2008 R2数据库恢复为SQL Server 2014 Express,相同的数据库名称,登录等。

现在,当我使用Visual Studio在我的笔记本电脑上运行任何ASP.NET MVC 5应用程序(使用Entity Framework 6)时,我会遇到零星的超时错误。请看下面。

enter image description here

enter image description here

enter image description here

有时,应用程序数据库调用将按预期执行,但大多数情况下它们非常慢或超时。

我发现很难理解为什么这与我之前使用SQL Server 2008 R2 Express的笔记本电脑一样,我从未遇到任何这些问题。

此外,这些应用程序位于实时Web服务器上,每天由1000个用户使用,没有任何这些问题。这让我觉得在我的笔记本电脑上安装SQL Server 2014 Express可能有问题。

我看到其他人评论在我的Command Timeout上扩展DbContext

public class MyDatabase : DbContext
{
    public MyDatabase ()
    : base(ContextHelper.CreateConnection("Connection string"), true)
    {
    ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
    }
}

但我不认为这是一个解决方案,因为我以前的笔记本电脑/环境并不需要这个,而且当前的实时应用程序也不需要它。

我很难过,非常感谢任何帮助或指导。

谢谢。

更新

感谢Steve Py的建议,我决定在同时运行Visual Studio 2015和SQL Server Express 2104时检查新笔记本电脑的内存性能。我在下面的屏幕截图中显示了使用了90%的可用内存(3.9G中的3.5G)。我远不是调整软件开发设备的专家,但是,这似乎可能是为什么当我在本地运行应用程序时它们超时的原因。

Stackoverflow上是否有人可以通知我这是否可能出现问题?

谢谢。

enter image description here

memory-management timeout out-of-memory sql-server-2014-express
1个回答
1
投票

首先,我要看一下探测器来捕获来自EF的查询。对于SQL Server,您可以使用ExpressProfiler。这将为您提供实际运行的SQL EF,行读取,写入和执行时间。复制SQL查询并将其粘贴到DB上的新查询窗口并执行它们,并查看执行计划。执行时间是否与EF相关? (更改参数并在SQL中重新运行以确保您没有获得缓存结果)

其他因素是两台笔记本电脑上的硬件。您希望新笔记本电脑比旧笔记本电脑更多,更多内核,更好内核,更多RAM,但它们如何比较?什么都没有运行,有多少内存可用?这两台机器有什么样的硬盘?例如,从具有SSD的i7下降到具有5400rpm HDD的i3,即使时钟速度更高,一半的RAM也将非常明显。

对于数据库而言,即使在备份和恢复时,也会有许多因素影响性能。例如,数据库的隔离级别和恢复模型设置可以发挥作用,尤其是对于较大的数据库。我还会查看服务器设置,例如分配数据库服务器可以使用多少RAM。您可以随意从分析器中粘贴一些结果以进行慢速查询。

编辑:基于资源使用的屏幕截图,我的猜测是你的新笔记本电脑可能功能不足。 4GB的RAM是Windows 10的基础,特别是运行Visual Studio和SQL Server,即使只是一个开发用数据库。 CPU和磁盘的历史记录图表也显示繁重的活动。如果这就是您必须使用的全部内容,那么下一步就是查看使用内存的内容。 SQL Server默认会尝试使用任何可用的东西,它可能非常贪婪,但在服务器上设置边界通常是个好主意。从SQL Management中,您可以调出服务器的属性并选择“Memory”来设置最小和最大内存大小。对于4GB,我将最小值设置为500MB,最大值设置为2000MB。对于处理器,您可以使用“提升SQL Server优先级”

接下来,在数据库方面的事情看看文件和恢复选项。数据库MDF文件和事务日志的大小是多少? (LDF文件)在“常规”下的数据库属性窗口中,您应该看到“大小”,它是MDF大小。对于LDF,您可能需要检查文件系统。大型LDF可能对性能有害,并指示应备份数据库并压缩/截断日志。 Lof文件默认以百分比增长,因此它们可以快速增长并搅动磁盘。在“选项”选项卡中,您可以检查“恢复模型”并将其设置为“简单”,以便开发数据库显着减少日志文件流失/增长。生产数据库将使用“完整”。

出于开发目的,它有助于从笔记本电脑中获得更多的咕噜声。虽然像“超级书籍”这样的东西看起来很不错,并且既漂亮又轻巧,但它们很少拥有开发环境所需的咕噜声和资源。 (加上通常很差的键盘和显示器来启动!:))超级书籍和工作站更换笔记本电脑之间的价格差距也很大。我发现适合这一差距并作为卓越的开发PC替代品是游戏笔记本电脑。它们针对性能进行了调整,通常最小可提供8GB的可扩展性。它们恰好也带有特殊的键盘和显示器。它们通常比工作站更换便宜一些,而这些工作站的替代品似乎价格溢价。我使用的是MSI GE65系列,配备16GB,SSD + HDD,一个出色的键盘,比最接近的“工作站”笔记本便宜1000美元。它确实吸引了一些人盯着一个带有LED键盘和盖子徽章的游戏笔记本电脑的客户端网站,但它上面没有一个游戏! :)

© www.soinside.com 2019 - 2024. All rights reserved.