我的网站服务器非常慢,我联系了我的托管公司。该公司要求我执行此命令行:
hdparm -tT /dev/sda
结果如下:
/dev/sda:
Timing cached reads: 1112 MB in 2.00 seconds = 555.55 MB/sec
Timing buffered disk reads: 4 MB in 4.80 seconds = 854.16 kB/sec
我不明白这是什么意思,我读过这篇文章,但你能清楚地解释一下这个结果是什么意思吗?
多谢。
答案1
首先,这太慢了……比互联网访问还慢。我们的网络服务器在近 7 年前只花费了 1800 美元,它为 hdparm -tT 提供了以下统计数据:
Timing buffer-cache reads: 1836 MB in 2.00 seconds = 918.00 MB/sec
Timing buffered disk reads: 98 MB in 1.95 seconds = 50.26 MB/sec
第一个速度表示如果数据已经缓冲,磁盘读取的速度有多快。磁盘从未被访问过,因此对于 Web 服务器来说,这可能毫无意义(因为大多数时候磁盘读取可能没有缓冲)。
第二个统计数据显示实际硬盘读取性能。就您而言,这意味着 Web 服务器的读取速度低于 1 MB/秒。如果您在同一台服务器上有数据库,则应将其移至单独的服务器,因为即使扫描小型表也可能需要几秒钟。
答案2
-T 正在测试操作系统磁盘缓存的读取速度。这反映了已缓存数据的读取操作的性能,并告诉您可以预期经常请求的数据以及可以预期完全缓存的数据的数据传输速率。它实际上告诉您有关主内存带宽的信息,而不是与磁盘本身有关的任何信息。
-t 正在测试底层磁盘的实际读取速率。这会绕过操作系统磁盘缓存,并为您提供可以预期从磁盘本身持续读取数据的数据速率的指示。
只有当服务器不忙于执行其他任务时,这些测试才能真正反映实际系统。在运行生产负载时使用它可以让您了解运行时可用的余量,这是一个有用的指标。
就您而言,854.16 kB/秒对于无缓冲读取来说是一个相当低的数字。我预计即使是相对较慢的现代驱动器也能带来>50Meg/秒的数字。就您而言,我猜您的服务器目前磁盘活动过载,hdparm 告诉您它几乎已达到最大值。
造成这种情况的具体原因是另一个问题 - 可能只是磁盘 IO 活动繁忙,可能存在驱动程序\设置问题,可能存在物理问题,单个驱动器出现读取问题或 RAID 组正在重建。