Назад | Перейти на главную страницу

Баланс пакетного ввода-вывода в реальном времени на инстансе EC2

Я пытаюсь устранить некоторые проблемы с производительностью диска в экземпляре ec2, используя том GP2 объемом 60 ГиБ. Показатели облачного наблюдения не кажутся детализированными. Есть ли способ просмотреть в реальном времени пакетный баланс, например следя за каким-то файлом, когда ssh'ed в машину?

Это невозможно, потому что эти показатели не исходят из экземпляра. Пакетный баланс поддерживается EBS, а не EC2. Где именно в инфраструктуре он рассчитывается, не задокументировано, но в любом случае он является внешним по отношению к вашей виртуальной машине.

Наблюдение за вводом-выводом с высокой степенью детализации изнутри вашего экземпляра может быть выполнено с помощью iostat. Я нахожу аргументы -x 1 быть полезным. Показатель% справа дает представление о восприятии вашего экземпляра того, насколько сильно он управляет объемом, в зависимости от времени ожидания.

Цифры около 100% означают, что вы насыщаетесь что-то хотя это нечто сложное сочетание факторов. Когда том EBS был создан из моментального снимка и все еще разогревается, обычно наблюдается почти 100% использование, даже если вы видите только 5-10 МБ / с пропускной способности, потому что вы насыщаете процесс прогрева внутри EBS. (который загружает блоки в том из данных моментального снимка; эта фоновая задача позволяет так быстро создавать большие тома из моментальных снимков - данные логически находятся на новом томе, но могут быть физически не на новом томе, пока) . Насыщение полосы пропускания Ethernet вашего экземпляра до EBS также приведет к высоким значениям%, даже если у самого тома есть свободная емкость.


Бонус: вот небольшая фраза, которую я придумал, чтобы сделать iostat показывать что-то больше похожее на "консольное" представление, а не на непрерывную прокрутку экрана. Он использует системный perl для добавления некоторых escape-последовательностей ansi для переформатирования вывода. Работает так, как написано в Ubuntu и, предположительно, также и в Amazon Linux. Бег iostat похоже, по сути, не создает значимой нагрузки на систему, поэтому его следует безопасно использовать на любом сервере.

iostat -x 1 | perl -pe 'BEGIN { $_ = 1; print "\e[1;1H\e[0J" } print "\e[3;1H" if /^avg\-cpu/; chomp; $_ .= "\e[0K\n"'