![在 VMWare 中运行的 Windows Server 2008 R2 上磁盘 IO 切断](https://linux22.com/image/624905/%E5%9C%A8%20VMWare%20%E4%B8%AD%E8%BF%90%E8%A1%8C%E7%9A%84%20Windows%20Server%202008%20R2%20%E4%B8%8A%E7%A3%81%E7%9B%98%20IO%20%E5%88%87%E6%96%AD.png)
大约一周以来,我们一直在尝试修复服务器问题。直到最近几天,我们才真正发现问题所在。
首先介绍一些信息:我们运行带有第三方 Web 主机的 VM。我知道他们使用 VMWare,但不知道具体版本。他们昨晚刚刚将我们的 VMWare Tools 更新到最新版本。服务器操作系统是 Windows Server 2008 R2,应该有最新的 Windows 更新。我们将其用作 Web 服务器,因此它运行 IIS 7.5,并在其上运行 Coldfusion 9.0.1。Coldfusion 9 应该使用最新版本的 JDK 6(我认为与 Java 7 存在兼容性问题)。
我们看到的是服务器在很短的时间内(从 30 秒到 2.5 分钟不等)基本处于“停机”状态。它并没有真正锁定,但 CPU 使用率降至几乎 0%,并且没有处理任何 Web 请求。
使用 Windows 性能监视器,我们发现当发生这种情况时,磁盘 IO 似乎会完全下降。附件是从性能监视器中提取的图表图像。
第一张图显示了这种情况发生的时间。请注意,磁盘空闲百分比(绿线)下降到 0。我猜这意味着磁盘访问已满负荷。CPU 下降到接近 0%,偶尔出现峰值。紫线是磁盘队列长度,我猜它显示了系统上有多少磁盘 IO 操作处于待处理状态。这通常非常低,大约为 1 或 2,通常为 0。当发生这种现象时,它会急剧增加(如果磁盘访问出现问题,这是有道理的)。
第二张图显示情况何时恢复。CPU 开始处理网络请求队列和其他积压的任务,但磁盘状态恢复“正常”。
虽然不是每次都会发生,但当这种情况发生并且中断时间很长(几分钟)时,我们还会在 Windows 系统事件日志中看到一些警告。来源是“LSI_SCSI”,事件 ID 是“129”,一般消息为“已发出重置设备 \Device\RaidPort0 的通知”。
当这种情况刚开始发生时,我们认为是代码出了问题,但在看到这一切发生后,我们觉得这要么是操作系统出了问题,要么是 VM/VMWare 出了问题。我认为这与负载无关,因为如果是的话,我认为我们会看到磁盘使用率和 CPU 使用率都很高。CPU 低的事实让我相信进程只是被阻塞,等待 IO 请求返回。在我写这篇文章的时候,我们正在与我们的托管服务提供商合作来解决这个问题,但我想在这里尝试一下。提前感谢任何帮助!
第一张图
第二张图
答案1
您的提供商可能在超载主机上运行您的虚拟机。如果其他人的虚拟机占用了磁盘,那么您将陷入困境,直到他们的虚拟机释放。除了制造大量噪音外,您无能为力。
答案2
我知道这个问题比较老了,我们很久以前就修复了它,但是在我的个人资料中看到了它并想发布答案。
原来,我们的托管服务提供商不小心搞砸了我们订购的升级。他们提供两层磁盘,一层速度较慢,另一层性能好得多。我不知道它们之间的技术差异是什么。
我们一直拥有性能更高性能的产品,但是当我们上次升级磁盘空间时,技术人员意外地将我们降至较低层级。
在我们的行业中,十二月下旬的流量通常比较慢,因此这些错误直到一月份流量(以及磁盘 IO)回升时才开始出现。
无论如何,经过大约两周的调查和无数个小时的浪费,我们与主机的一名技术人员通了电话,发现了这个小问题。由于它给我们带来了麻烦,我们最终获得了两个月的免费托管服务。