我的问题密切相关我最后一个问题这里是 serverfault。
我正在将大约 5GB 的数据从一台 10 年前的台式电脑复制到服务器上。复制是在 Windows 资源管理器中完成的。在这种情况下,我认为服务器对数据流感到厌烦。
但与这台服务器一样,它确实变慢了。至少我可以使用远程会话,即使存在严重的延迟。复制需要时间(20 分钟?)。这段时间我去找一位同事,他试图通过远程桌面登录同一台服务器(出于其他原因)。进入登录屏幕大约需要一分钟,打开控制面板需要一分钟,打开性能监视器需要一分钟,......图标可能每秒加载一个。我们看到了以下内容(来自记忆):
- CPU:2%
- 平均队列长度:50
- 页数/秒:115(?)
服务器上没有其他重大活动。服务器很少提供一些 ASP.NET 页面,这些页面在这段时间内也变得非常慢。
相关配置如下:
Windows 2003
希捷 ST3500631NS(7200 rpm,500 GB)
基于 LSI MegaRAID 的 RAID 5
4 个磁盘,1 个热备用
直写
- 无需预读
- 直接缓存模式
- 硬盘缓存模式:关闭
对于这种配置,这是正常现象吗?哪些测量结果可以提供进一步的线索?
是吗合理的降低此类复制 I/O 的优先级并支持远程桌面等其他进程?您将如何做到这一点?
非常感谢!
答案1
磁盘过载。就这么简单。平均队列长度 50 - 检查“每次 IO/读取/写入的秒数” - 这也会太高。
看起来很像你基本上完全超载了光盘,并且关闭硬盘缓存模式也无济于事(糟糕的设置 - 至少把它放到读取缓存那里...更好的写入+UPS - 没有缓存 SATA NCQ 无法工作,从而降低你的性能)。
主要问题是您的 RAID 5 - 它基本上包含了所有内容。文件区域和操作系统,因此过载会导致整个系统过载。
对于真正的服务器,我使用 WD Scorpio Black 的 Raid 10(4 张光盘)作为操作系统和(我只做虚拟)虚拟化根目录 - Raid 10 为我提供了更好的性能。对于高性能文件服务器,我会/确实为文件添加第二个 raid(可以是 raid 5)。这里的技巧是文件区域和操作系统区域永远不允许重叠(相同的光盘)。对于你的情况 - 拿一块小硬盘(80gb 左右) - 两个 - 并在它们上面放一个镜像,然后将操作系统移到上面。然后当 IO 堆积时,服务器仍然可用。
每秒页数不代表什么 - 它表示有一些虚拟内存在运行。如果在文件复制期间虚拟内存访问磁盘(很有可能,但这是另一个性能计数器,它将物理活动标记为页面错误的结果),那么它自然会进入队列。
请开启缓存。LSI 可以卖给您一些 bbu(电池备份单元?)。我自己使用 Adaptec 作为 RAID 控制器,自从我在其上安装 BBU 以来,我将缓存设置为写回(而不是写通)——优化带来的性能提升非常显著。
答案2
其他答案已经很好地描述了这个问题,但简而言之:
您的 RAID 阵列包含 3 个(活动)7200 RPM 磁盘(RAID 5),其写入性能约为单个 7200RPM 驱动器的 3/4(用于扩展复制)。假设您已禁用缓存\预读等,性能将更差。在大多数情况下,从写入角度来看,使用此配置,您的服务器的性能将非常差。
如果您的 5GB 是一个大型文件(或几个相当大的文件),并且您的基于网络的副本以超过 30Meg/秒的速度发送(使用千兆连接很容易),那么您的服务器的磁盘将无法跟上,服务器上的网络副本缓冲将不断增长,直到它耗尽服务器上所有可用的内存,然后这将迫使操作系统开始过度分页,从而进一步恶化您的性能问题。根据服务器上实际发生的其他事情,导致系统崩溃所需的复制速度可能甚至低于此,如果有任何其他持续的读\写活动,即使速率非常低,那么通过 100Meg 连接进行的入站复制也足以触发此类问题。
答案3
您确定 RAID 阵列没有被重建吗?我见过重建/验证让一个盒子崩溃。您甚至可能有一个驱动器处于边缘状态并且无法跟上其他驱动器,但不会抛出错误代码(目前)。
“RAID”驱动器应立即告知控制器它有问题,“消费者”(它们是相同的,但固件不同)驱动器将继续重试失败的请求,而不是默认快速失败。我有几个最终由于负载超时而从阵列中掉线的驱动器。它们会检查无误并重建(通常)而不会发生任何意外,但一旦机箱处于负载状态,它们就会再次开始超时。不断的重建和停滞的驱动器会在几个重建周期后使机箱陷入停滞状态。