【问题标题】:How would I check how busy the HDD is with PHP?我如何检查硬盘对 PHP 的繁忙程度?
【发布时间】:2016-08-01 16:19:57
【问题描述】:

我注意到一些云托管解决方案的磁盘 IO 非常差。这会导致一些问题,可以通过让脚本等到磁盘不那么繁忙来解决。

使用 PHP 是否可以监控文件系统的繁忙(或不太繁忙)状态而不会使事情变得更糟?

【问题讨论】:

  • 嗯,您当然可以启动各种系统实用程序并评估它们的输出,以获得您也可以作为人类绘制的任何信息。但是,我怀疑这在您描述的场景中是否真的有帮助。您在虚拟化系统中看到的“硬盘”只是模拟的。因此,实用程序可能会显示一些信息,但问题是其中有多少真实性。在这种情况下,性能不佳不在系统硬件内(无论如何它是虚拟的),而是在提供所有服务的整个网络集群内,这是您无法控制或预测的。
  • 如果您在当前解决方案中遇到问题,我会建议您找一个更好的供应商或更好的报价。不同的供应商之间存在巨大的差异。与知名公司相比,知名度较低的提供商通常提供更好的性能。
  • 我应该补充一点,我不再参与该项目(谢天谢地)。该系统在 HDD 读取方面存在严重滞后。缓存到 HDD 而不是 DB 实际上会导致连接超时。这是我合作过的最糟糕的平台。我最终将配置变量存储在数据库中,因为这样获取它们更快。
  • 嗯,当然,访问数据库中的值比访问基于磁盘的文件系统更快。至少来自基于服务器的数据库,而不是 SQLite

标签: php filesystems disk-access


【解决方案1】:

如果这是一个 Linux 系统,您可以自己计算磁盘使用量 - 您选择实现它的语言将使用相同的概念。

您的内核很可能使用sysfs,这使得/sys 上提供了有关您系统的大量信息;我们可以定期获取所需磁盘的信息,并根据它们之间的差异计算使用情况。

在我的系统上,我将查看磁盘 sda,您的可能会有所不同。

$ cat /sys/class/block/sda/stat
   42632       25  2045318   247192  6956543  7362278 123236256 23878974        0  3703033 24119492

现在,如果我们查看the Kernel documentation 中的/sys/class/block/<dev>/stat,我们可以看到输出每一列的以下描述。

Name            units         description
----            -----         -----------
read I/Os       requests      number of read I/Os processed
read merges     requests      number of read I/Os merged with in-queue I/O
read sectors    sectors       number of sectors read
read ticks      milliseconds  total wait time for read requests
write I/Os      requests      number of write I/Os processed
write merges    requests      number of write I/Os merged with in-queue I/O
write sectors   sectors       number of sectors written
write ticks     milliseconds  total wait time for write requests
in_flight       requests      number of I/Os currently in flight
io_ticks        milliseconds  total time this block device has been active
time_in_queue   milliseconds  total wait time for all requests

如果我们在 cron 计划上运行它,并区分一些等待时间,我们可以看到我们在每个操作上等待了多长时间。您还将获得有关总 IOPS 和 RW 带宽的其他统计信息。文档对每个领域都有更深入的了解。

无论选择何种语言,要打开以获取有关磁盘信息的文件描述符都是

/sys/class/block/<dev>/stat

如果我们按计划进行,我们可以绘制精美的图表;)

【讨论】:

  • 这个答案太棒了,我几乎很遗憾没有机会尝试一下。然后我想起了我是多么高兴不再参与那个项​​目。
  • 抱歉恢复帖子;在 meta 上看到它并不得不分享我的图表 :D 但无论项目如何,图表总是一件好事,因为它必须能够识别问题!祝你好运! (我用Grafana)抱歉没有早点看到帖子!
  • 嘿,没问题。你解决了我对如何处理这个问题的担忧。它现在很有用,这是一个胜利。
  • 使用df 太容易了,同意。
  • 这是不正确的,除非有一个我不知道的开关,否则 df 只会显示空间消耗,而不会显示当前活动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 2010-11-14
  • 2011-03-23
相关资源
最近更新 更多