常量SQL Server 80%CPU利用率

时间:2014-04-08 18:11:42

标签: asp.net performance sql-server-2012 cpu-usage sql-server-performance

我们在专用的VPS上有一个小的(现在)Asp.Net MVC 5网站。当我去服务器和启动任务管理器时,我看到“SQL Server Windows NT - 64位”使用了大约80%的CPU和170MB的RAM,而IIS正在使用6%的CPU和400MB的RAM。服务器规格是:

  • CPU 1.90Ghz双核
  • 内存2GB
  • Windows Server 2012
  • SQL Server Express 2012
  • 磁盘空间:25GB,2.35免费。

数据库不是很大。它的备份不到10MB。

我尽可能地尝试优化网站。我为很多控制器添加了缓存,并为很多控制器实现了甜甜圈缓存。但是今天,即使在线只有5个用户,我们的搜索也行不通。我重新启动了服务器上的Windows,它开始工作,但我得到了服务器启动时的高CPU使用率。有趣的是,当我打开SQL Server Management Studio并尝试获取顶级CPU消耗查询的报告时,它表示目前没有查询消耗任何CPU!但与此同时我可以看到SQL服务器消耗了大量的CPU。如何检查所有CPU的内容?以下是服务器的图片:

High CPU Usage

我对设计和实施网站非常谨慎。所有数据库访问都是通过最新版本的Entity Framework。我只是想知道服务器的规格是否很低。非常感谢任何帮助。

更新

以下是sp_who2存储过程的结果。

sp_who2

2 个答案:

答案 0 :(得分:1)

如果要使用的内存大于盒子上的可用内存,则可能会发生这种情况。默认内存设置为2147483647MB。在我们的例子中,AWS盒只有30.5 GB,因此我们将设置更改为26GB,CPU使用率降至40%。您通常希望为操作系统及其操作留出20%的内存。

答案 1 :(得分:0)

我同意运行SQL事件探查器以发现大型查询持续时间和大型写入操作。尝试运行perfmon并发现任何潜在的连接泄漏(回收连接)。