Задержка на диске, вызывающая скачки ЦП на инстансе EC2 - PullRequest
2 голосов
/ 17 июня 2020

У нас возникла интересная проблема, когда мы наблюдаем всплеск ЦП в нашем экземпляре EC2 и в то же время мы наблюдаем всплеск задержки диска. Вот образец скачка ЦП

  1. Пик ЦП с 50% до 100% в течение 30 секунд
  2. Он остается при 100% загрузке в течение двух минут
  3. Загрузка ЦП снижается со 100 до почти 0 за 10 секунд. В то же время задержка диска почти вернулась к норме.

Эта проблема возникала на разных экземплярах AWS ec2 пару раз за неделю и все еще происходит. Во всех случаях мы наблюдаем всплеск ЦП вместе с задержкой на диске, причем всплеск ЦП имеет ту же картину, что и выше.

Мы установили инструменты мониторинга процессов, чтобы проверить, не занимает ли какой-либо конкретный процесс ЦП. Этот инструмент показал, что каждый процесс в экземпляре ec2 начинает использовать примерно вдвое больше ЦП. Например, загрузка ЦП нашего сервера приложений увеличивается с 0,75% до 1,5. Аналогичное наблюдение для Nginx и других процессов. Не было ни одного процесса, занимающего более 8% ЦП. Мы изучили наш шаблон трафика c, и нет ничего необычного, что могло бы это вызвать. Таким образом, возникает вопрос:

  1. Может ли увеличение задержки диска вызвать всплеск ЦП, как указано выше, или вообще может задержка диска привести к всплеску ЦП

Ответы [ 2 ]

1 голос
/ 24 июня 2020

Вот моя ставка: вы используете машины t2 / t3, которые являются экземплярами с пакетным управлением. Вы можете получить доступ к 30% ЦП все время, а кредитная система создает предсказуемый режим справедливого использования для оставшихся 70%. Вы получаете кредит, запустив экземпляр, вы теряете кредит, превышая 30% использования ЦП.

У вас заканчиваются кредиты, а затем AWS сокращает доступ к ЦП. Система снова работает гладко, когда кредиты добавляются к вашему балансу.

t2 и t3 не имеют системы кредитов, вы можете найти подробности здесь: Кредиты ЦП и базовый уровень

У вас есть два решения:

  • Возьмите более крупный экземпляр, чтобы у вас было больше кредитов в час и лучший базовый уровень или другое семейство, такое как c5, m5, r5 и т.д. c ...
  • Выберите неограниченный режим для ваших инстансов t3
0 голосов
/ 28 июня 2020

Я бы посоветовал более быстрое хранение. cpu стремится добавить до 100%. ограничение работает таким странным образом, что имитирует использование по «неизвестной» причине. Причины могут быть одной из следующих:

  • время простоя (обратите внимание, это то, что вы считаете БЕСПЛАТНЫМ процессором, поэтому я говорю, что это составляет 100%)
  • пользовательское время (нормальное использование)
  • системное время (использование системы)
  • iowait (ваш случай, процессор ожидает ответа жесткого / твердотельного накопителя)
  • хорошее время (низкий приоритетные процессы, которые не были включены во время пользователя)
  • время прерывания (время «разговора» внешнего устройства - может быть вашим случаем, если у вас много USB-устройств и т. д. c - маловероятно)
  • softirq (работа в очереди из обработанного прерывания - см. выше)
  • время кражи (случай, который описывает Клемент)

Я бы посоветовал проверить, какой из них является вашим случаем

you can try below to get the info:
$ sudo apt-get install sysstat
$ mpstat -P ALL 1

Отсюда для вас есть 2 варианта:)

  1. EBS позволяет запускать том, оптимизированный для ввода-вывода, называемый «IO1» (средняя цена - средняя скорость)
  2. Измените машина и используйте один в «Nitro System» (предоставляет возможности голого железа, то есть: как если бы у вас был настоящий NVMe c подключено напрямую - максимально возможная скорость)
m5.2xlarge  8   37  32 GiB  EBS Only    $0.384 per Hour
m5d.2xlarge 8   37  32 GiB  1 x 300 NVMe SSD    $0.452 per Hour

Источник: Экземпляры, построенные на системе Nitro

...