php - 我如何检查 HDD 使用 PHP 的繁忙程度?

标签 php filesystems disk-access

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

使用 PHP 是否可以在不使事情变得更糟的情况下监视文件系统的繁忙(或不那么繁忙)状态?

最佳答案

如果这是一个 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

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

enter image description here

关于php - 我如何检查 HDD 使用 PHP 的繁忙程度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703598/

相关文章:

php - 从列中选择时间具有带 sql 的日期时间格式

php - UTF-8贯穿始终

node.js - 定期检查和清理服务器中的文件

c# - 如何检查文件自上次读取以来是否已更改? (C#)

python - "disk_usage"从shutil库返回的字节与目录文件大小不匹配

elasticsearch - 在ElasticSearch中删除文档后如何释放未使用的空间?

PHP/ldap_bind Active Directory 无法验证 OU,但可以使用默认用户组进行验证

php - 通过使用 MySQL 查询添加一个字符来更新所有列值

windows - 如果应用程序未运行,如何删除文件?

apache-kafka - Apache 卡夫卡 : reduce kafka disk usage