我们建了一台windows 2012R2服务器(它有足够的可用内存/磁盘空间,CPU性能很高),但它每12小时就会冻结大约半小时。
症状:
无法访问服务器中托管的网站
无法远程进入服务器
调查结果:
- 服务器的 EventView 中有许多 EventID= 508(对于svchost.eve)、833(对于sqlserver)。
EventID= 508之一:svchost (2128) 成功写入文件“C:\Windows\system32\LogFiles\Sum\Svc.log”的偏移量 4775936 (0x000000000048e000) 4096 (0x00001000) 字节,但占用了操作系统提供异常长的时间(36 秒)。此问题可能是由于硬件故障。请联系您的硬件供应商以获得诊断问题的进一步帮助。
下面是磁盘性能图表:
你会看到% IDLE Time小于 40%,Queue Length有时会达到 100。即使数据收集器似乎在上午 8:37 到上午 8:50 之间停止工作。
似乎瓶颈是磁盘 I/O,它导致服务器被冻结。但我不知道如何进一步调查。
我的问题:
% IDEL Time < 40%很糟糕吗?队列长度达到100怎么办?
什么可能导致数据收集器停止工作?
如果根本原因是硬件故障,那么服务器在一天的大部分时间里如何正常工作?
啊,总是一样...
是的,但你知道你不说什么吗?磁盘性能。
对 dis 的操作并不像它应该花费的那样花费毫秒,而是 36 秒。你基本上有一辆 40 吨的卡车,并抱怨它没有一级方程式赛车快。让我猜猜 - 超级慢且大的 SATA 硬盘,每个使用数据库的人要么使用数十张磁盘,要么将 LOOONG 转移到 SSD,其 IO 容量是高端磁盘的 100 倍。
这有4个原因,可能:
最后:
这样就可以确定了。事情同时发生并且只持续半小时的事实表明它不是前两个项目之一——这些事件发生得更加随机,即并不总是同时发生。
开始评估硬件容量并检查哪些查询速度较慢。然后可能会锤击程序员以实际完成他们的工作并添加适当的索引。