2016-08-01 7 views
8

Я заметил, что некоторые решения для облачных хостингов имеют действительно плохой диск IO. Это вызывает несколько проблем, которые могут быть решены, если сценарий ждет, пока диск не будет занят.Как я могу проверить, как занят жесткий диск с помощью PHP?

С помощью PHP можно контролировать занятое (или не очень занятое) состояние файловой системы, не делая хуже?

+1

Ну, вы, безусловно, можете запускать всевозможные системные утилиты и оценивать их результаты, чтобы получить любую информацию, которую вы могли бы также привлечь как человек. Однако я сомневаюсь, что это действительно помогает в описываемом вами сценарии. «Жесткий диск», который вы видите в виртуализованной системе, моделируется только. Таким образом, утилиты могут отображать некоторую информацию, но вопрос в том, насколько истина в этом. Плохая производительность в таких сценариях не входит в системное оборудование (оно все равно виртуально), но во всем сетевом кластере, предлагающем все сервисы, которые вы не можете контролировать или прогнозировать. – arkascha

+1

Я бы сказал, получить лучший поставщик или лучшее предложение, если у вас возникнут проблемы с вашим текущим решением. Между различными провайдерами существуют _huge_ различия. Часто менее известные поставщики предлагают гораздо лучшую производительность, чем известные компании. – arkascha

+0

Я должен добавить, что я больше не в проекте (и благодарен не буду). Система имела нехорошее отставание на жестком диске. Кэширование на жестком диске вместо DB фактически привело к отключению соединений. Это была худшая платформа, с которой я когда-либо работал. Я закончил хранение конфигурационных варсов в БД, потому что было быстрее получить их таким образом. –

ответ

17

Если это 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 

Если мы запустим это по расписанию хрон и дифф некоторые из времени ожидания, мы можем видеть, как долго мы ждем на каждой операции. У вас также будет другая статистика об общем количестве IOPS и пропускной способности RW. Документация более подробно описана в каждом поле.

Какой бы язык ни был выбран, дескриптор файла, чтобы открыть, чтобы получить информацию о диске будет

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

Если мы делаем это на графике, мы можем рисовать причудливые графики;)

enter image description here

+7

Этот ответ настолько велик, что я почти сожалел, что не получил шанс попробовать его. Затем я вспомнил, как я рад, что я больше не был в этом проекте. –

+3

Жаль воскресить сообщение; видел его на мета и мне приходилось делиться своими графиками: D Но независимо от проекта, графики всегда бывают полезными, чтобы иметь возможность идентифицировать проблемы! Удачи! (Я использую [Grafana] (https: // grafana.com /)) Извините, я не видел сообщение раньше! –

+2

Эй, без проблем. Вы решили мое беспокойство о том, что делать с вопросом. Это полезно сейчас, это победа. –

 Смежные вопросы

  • Нет связанных вопросов^_^