我被要求在一个客户的设施中排除托pipe我们应用程序的服务器的故障。
客户在上周一周半的时间里曾两次向我们投诉。 在一个例子中,他们声称服务器的内存是“最大化”的,而在另一个例子中,他们声称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日志logging到服务器上的一个csv文件,其中包括以下计数器:
我还在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
login到SQL Server Management Studio,右键单击您的实例并转到“属性”>“内存”。 默认情况下,SQL Server 2012 Standard将您的最大服务器内存设置为2147483647 MB等荒谬的内容。 我将SQL Server的最大服务器内存设置为8192 MB(或小于32GB)。
而不是使用PerfMon,也许你可以在SQL Server Management Studio的工具下使用SQL Server Profiler 。 这将是资源沉重,但你可以得到一个更好的主意,在应用程序发生什么事情可能会导致CPU或内存使用率的尖峰。