Я заметил, что некоторые облачные хостинговые решения имеют очень плохой дисковый ввод-вывод. Это приводит к нескольким проблемам, которые можно решить, если сценарий подождет, пока диск не станет менее занятым.
С помощью PHP возможно ли отслеживать занятое (или не очень занятое) состояние файловой системы, не ухудшая ситуацию?
Если это система Linux, вы можете самостоятельно рассчитать использование диска — язык, на котором вы решите ее реализовать, будет использовать те же понятия.
Ваше ядро, скорее всего, использует sysfs что делает много информации о вашей системе доступной на /sys
; мы можем регулярно получать информацию о желаемых дисках и рассчитывать их использование на основе различий между ними.
В моей системе я буду смотреть на диск, sda
Ваш может отличаться.
$ cat /sys/class/block/sda/stat
42632 25 2045318 247192 6956543 7362278 123236256 23878974 0 3703033 24119492
Теперь, если мы посмотрим на Документация ядра за /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
Если мы делаем это по расписанию, мы можем рисовать причудливые графики;)
Других решений пока нет …