我们在专用的VPS上有一个小的(现在)Asp.Net MVC 5网站。当我去服务器和启动任务管理器时,我看到“SQL Server Windows NT - 64位”使用了大约80%的CPU和170MB的RAM,而IIS正在使用6%的CPU和400MB的RAM。服务器规格是:
数据库不是很大。它的备份不到10MB。
我尽可能地尝试优化网站。我为很多控制器添加了缓存,并为很多控制器实现了甜甜圈缓存。但是今天,即使在线只有5个用户,我们的搜索也行不通。我重新启动了服务器上的Windows,它开始工作,但我得到了服务器启动时的高CPU使用率。有趣的是,当我打开SQL Server Management Studio并尝试获取顶级CPU消耗查询的报告时,它表示目前没有查询消耗任何CPU!但与此同时我可以看到SQL服务器消耗了大量的CPU。如何检查所有CPU的内容?以下是服务器的图片:
我对设计和实施网站非常谨慎。所有数据库访问都是通过最新版本的Entity Framework。我只是想知道服务器的规格是否很低。非常感谢任何帮助。
以下是sp_who2
存储过程的结果。
答案 0 :(得分:1)
如果要使用的内存大于盒子上的可用内存,则可能会发生这种情况。默认内存设置为2147483647MB。在我们的例子中,AWS盒只有30.5 GB,因此我们将设置更改为26GB,CPU使用率降至40%。您通常希望为操作系统及其操作留出20%的内存。
答案 1 :(得分:0)
我同意运行SQL事件探查器以发现大型查询持续时间和大型写入操作。尝试运行perfmon并发现任何潜在的连接泄漏(回收连接)。