У меня есть требование завершить работу инстансов EC2 менее чем за минуту.
Текущий процесс занимает чуть менее 2 минут на экземпляр, потому что процесс выключения ОС занимает 60 секунд. Я хочу значительно ускорить увольнение, если это возможно.
Кто-нибудь знает способ ускорить terminate()
функция в EC2? Есть ли способ "отключить" без остановки, как это делают другие решения виртуализации?
Задний план:
В Бото я называю terminate()
функция с wait_until_terminated()
перед обработкой удаления подсети или других последующих задач.
Но я запускаю бото из стороннего API, который истекает, если процессы (например, завершение) занимают больше минуты. Это означает, что каждый раз, когда я завершаю работу, API возвращает ошибки.
Я пытался работать с третьей стороной, чтобы увеличить тайм-аут, но такие вещи, как прерывание, не соответствуют ожидаемым вариантам использования, и на данный момент стороннего решения нет.
Я попробовал stop(Force=True)
и это немного быстрее, но все же больше минуты.
Я попытался принудительно удалить том EBS, но сначала вам нужно выключить экземпляр, в результате чего процесс превысит 1 минуту.
Я пробовал использовать SSH для запуска различных shutdown
и halt
аргументы команды, но я не могу найти команду ОС, которая выполняется быстрее 60 секунд. Количество запущенных служб уже минимально, и я не могу дальше ускорять завершение работы ОС.
Я надеюсь найти способ "отключить" через AWS. Или какой-нибудь другой способ быстро прекратить. Похоже, что для завершения требуется выключение ОС, что для меня немного странно, когда я все равно хочу зажечь экземпляр.
Хотя я согласен с тем, что это проблема XY, и вы должны решить эту проблему другим способом, существуют гораздо более быстрые способы завершения работы ОС, чем использование shutdown
. Нет причин ждать, пока Linux вызовет сценарии инициализации и выдаст TERM
и KILL
ко всем процессам.
Исторически я считаю killall -9 init
или волшебный ключ SysRq был самым быстрым способом. Тем не мение, systemd
перечисляет много способов (man systemd
), например:
SIGRTMIN+13
Immediately halts the machine.
SIGRTMIN+14
Immediately powers off the machine.
Вероятно, вам придется протестировать несколько вариантов, прежде чем найти тот, на который AWS реагирует быстрее всего, но переход с выключения ОС с 60 секунд до 1-5 секунд должен быть достаточно простым.