服务器高内存和 CPU - 没有线索

服务器高内存和 CPU - 没有线索

我被要求对客户设施中托管我们的应用程序的服务器进行故障排除。

在过去一周半的时间里,客户向我们投诉了两次。一次他们声称服务器内存“超负荷”,另一次他们声称 CPU“超负荷”。两次投诉都导致我们的应用程序无法使用,客户被迫重启服务器。

服务器规格如下:

System Manufacturer Dell Inc.
System Model    PowerEdge R320
System Type x64-based PC

Processor   Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz, 2200 Mhz, 6 Core(s), 12 Logical Processor(s) - Hyperthreading-enabled???

OS Name Microsoft Windows Server 2008 R2 Standard
Version 6.1.7601 Service Pack 1 Build 7601

Installed Physical Memory (RAM) 32.0 GB
Total Physical Memory   32.0 GB
Available Physical Memory   26.1 GB
Total Virtual Memory    41.7 GB
Available Virtual Memory    34.9 GB
Page File Space 9.77 GB
Page File   C:\pagefile.sys

我们的应用程序由提供支持Microsoft SQL Server 2012 (11.0.2100.60 (X64) - Standard Edition), IIS 7.5, a handful of proprietary Windows Services applications- 它们都在同一台服务器上。

最近,应用程序的性能更加稳定和可接受。但我感觉这台服务器的健康状况再次下降只是时间问题。

我被要求调查这些先前发生的事件。但我似乎没有太多线索。

Windows 事件查看器中的一些条目证实了内存压力的指控。在一小时内,事件查看器中连续列出了 12 个这样的条目。

A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 221384, committed (KB): 434308, memory utilization: 50%.

为了积极主动并为另一次潜在的中断做好准备,我已启用 PerfMon 日志记录到服务器上的 csv 文件中,其中包括以下计数器:

  • 内存\可用兆字节
  • 内存\页数/秒
  • 内存\已使用已提交字节数百分比
  • 页面文件(\??\C:\pagefile.sys)\% 使用率
  • PhysicalDisk(*)\平均磁盘秒/读取
  • PhysicalDisk(*)\平均磁盘秒/写入
  • PhysicalDisk(*)\磁盘读取次数/秒
  • PhysicalDisk(*)\磁盘写入次数/秒
  • 系统\处理器队列长度
  • SQLServer:缓冲区管理器\页面预期寿命
  • SQLServer:常规统计信息\用户连接
  • SQLServer:内存管理器\内存授予待定
  • SQLServer:SQL 统计信息\批处理请求/秒
  • SQLServer:SQL 统计信息\SQL 编译/秒
  • SQLServer:SQL 统计信息\SQL 重新编译次数/秒
  • 处理器 (_Total)\% 处理器时间
  • 系统\上下文切换/秒
  • 系统\进程
  • 进程 (x)\% 处理器时间(其中 x 位于 (sqlservr、w3wp 等))

我还在 SQL Server 代理中针对严重程度 17-25 和几个特定的​​错误 ID 设置了一些基本的电子邮件警报。

(1) 我还应该跟踪/监控/做什么,以便更好地应对下一次事故?我希望有足够的数据来追溯事故发生前的事件。

(2) 根据 Windows 事件查看器条目,我们知道存在内存压力,但在查看我迄今为止收集的 PerfMon 数据后,有几件事突出表明可能存在 CPU 问题,但我并不完全确定。以下数字是否太高?> 50 的峰值让我感到担忧,尽管它们不会持续很长时间

为了Processor Queue Length

Average = 0.5
Median = 0
Min = 0
Max = 89
Std Deviation = 3.07

答案1

登录 SQL Server Management Studio,右键单击您的实例并转到“属性”>“内存”。默认情况下,SQL Server 2012 Standard 将您的最大服务器内存设置为荒谬的 2147483647 MB​​。我会将 SQL Server 的最大服务器内存设置为 8192 MB(或小于 32GB)。

除了使用 PerfMon,你还可以使用SQL Server 事件探查器在 SQL Server Management Studio 中的工具下。这将占用大量资源,但您可以更好地了解应用程序中可能导致 CPU 或内存使用量激增的情况。

相关内容