Я использую AWS CodeDeploy для развертывания своих сайтов и заметил, что он не очень стабильный по скорости; иногда это довольно быстро, но в других случаях каждый шаг развертывания может занять несколько минут. Это довольно раздражает, когда развертывание должно выполняться быстро, в случае ошибок или сбоев.
Я не могу найти никакой документации о скорости CodeDeploy, а также я не могу найти никакой логики в том, когда он медленный или когда он быстрый. Есть ли способ ускорить его и есть ли способ узнать, что занимает так много времени?
CodeDeploy делает очень мало по умолчанию - он берет код с S3 или Github, затем запускает ваши скрипты в соответствии appspec.ymlс инструкциями файла.
Если ваши развертывания захватывают гигабайты данных из S3, вы обнаружите, что для передачи данных требуется некоторое время (особенно в небольших инстансах EC2 с ограниченной пропускной способностью), но кроме этого задержки развертывания гораздо более вероятны из-за того, что вы Вы делаете в ваших сценариях развертывания.
Шаги в развертывании CodeDeploy:
ApplicationStop - вы управляете этим хуком
DownloadBundle - CodeDeploy захватывает код с S3 / Github
BeforeInstall - вы управляете этим хуком
Установить - CodeDeploy копирует код из временного местоположения в конечный пункт назначения
AfterInstall - вы управляете этим хуком
ApplicationStart - вы управляете этим хуком
ValidateService - вы управляете этим хуком
Выделенные жирным шрифтом - до CodeDeploy, остальные - за вами. Если вы видите различные задержки в выделении жирным шрифтом, обратитесь в службу поддержки AWS, но в противном случае есть вероятность, что вам нужно исследовать свои крючки.
Да, мои собственные сценарии простые и быстрые. Это шаг загрузки пакета, который часто занимает несколько минут, а мой проект не такой большой; так же часто это занимает всего несколько секунд. У меня нет плана поддержки для разработчиков, и я не собираюсь платить за него только за это, поэтому я просто позволю этому быть сейчас.
Джаспер Кеннис
Проверил еще раз, проблема должна быть в пропускной способности; мы используем небольшой тип экземпляра для нашего промежуточного сервера и один раз больше для производства, и всегда выполняется медленная подготовка.
Джаспер Кеннис
@JasperKennis Да, меньшие типы экземпляров могут быть довольно ограничены по пропускной способности, особенно если вы находитесь на хосте с шумными соседями. Это имело бы смысл.
ceejayoz
21
BlockTraffic и AllowTraffic
Простая настройка параметров проверки здоровья вашей целевой группы может сбрить пару минут.
Перед
После
объяснение
Это работает , потому что BlockTrafficи AllowTrafficкак ожидание успешных проверок здоровья. Интервал проверки работоспособности по умолчанию - 1 проверка каждые 30 секунд, и для успешной проверки работоспособности требуется 5 последовательных 200 ответов. Таким образом, это занимает более 2 минут 30 секунд по умолчанию. И это для каждого экземпляра EC2. Уменьшение интервала проверки работоспособности и ограничение количества успешных проверок позволят сократить время развертывания.
После внесения этого изменения я получаю Script at specified location: ... failed to complete in 5 seconds. (устанавливается в appspec.yml-> hooks: -> BeforeInstall :) (скажите, пожалуйста, почему)
Спасибо, теперь я вижу, что это не связано, а скорее совпадение.
Евгений Афанасьев
2
Другим параметром для проверки является «Задержка отмены регистрации» целевой группы. Мои настройки проверки здоровья были уже низкими, и это было узким местом в моем случае.
BlockTraffic и AllowTraffic
Простая настройка параметров проверки здоровья вашей целевой группы может сбрить пару минут.
Перед
После
объяснение
Это работает , потому что
BlockTraffic
иAllowTraffic
как ожидание успешных проверок здоровья. Интервал проверки работоспособности по умолчанию - 1 проверка каждые 30 секунд, и для успешной проверки работоспособности требуется 5 последовательных 200 ответов. Таким образом, это занимает более 2 минут 30 секунд по умолчанию. И это для каждого экземпляра EC2. Уменьшение интервала проверки работоспособности и ограничение количества успешных проверок позволят сократить время развертывания.источник
Script at specified location: ... failed to complete in 5 seconds
. (устанавливается в appspec.yml-> hooks: -> BeforeInstall :) (скажите, пожалуйста, почему)Другим параметром для проверки является «Задержка отмены регистрации» целевой группы. Мои настройки проверки здоровья были уже низкими, и это было узким местом в моем случае.
источник