Esiste un modo per velocizzare AWS CodeDeploy


15

Sto usando AWS CodeDeploy per distribuire i miei siti e ho notato che non è molto coerente in termini di velocità; a volte è piuttosto veloce, ma altre volte ogni fase di una distribuzione può richiedere minuti. Questo è piuttosto fastidioso quando una distribuzione dovrebbe essere eseguita velocemente, in caso di bug o interruzioni.

Non riesco a trovare alcuna documentazione sulla velocità di CodeDeploy, e inoltre non riesco a trovare alcuna logica quando è lento o quando è veloce. C'è un modo per accelerarlo e c'è un modo per sapere cosa ci vuole così tanto tempo?

Risposte:


10

CodeDeploy fa molto poco per impostazione predefinita: prende il codice da S3 o Github, quindi esegue gli script secondo le appspec.ymlistruzioni del file.

Se le tue distribuzioni stanno ottenendo gigabyte di dati da S3, scoprirai che ci vorrà del tempo per il trasferimento dei dati (in particolare su istanze EC2 più piccole con larghezza di banda limitata), ma a parte questo i ritardi di distribuzione sono molto più probabili a causa di qualsiasi cosa tu stai facendo nei tuoi script di distribuzione.

I passaggi in una distribuzione CodeDeploy sono:

  • ApplicationStop: controlli questo hook
  • DownloadBundle - CodeDeploy prende il codice da S3 / Github
  • BeforeInstall - controlli questo hook
  • Installa: CodeDeploy copia il codice da una posizione temporanea alla destinazione finale
  • AfterInstall: controlli questo hook
  • ApplicationStart: controlli questo hook
  • ValidateService: controlli questo hook

Quelli in grassetto dipendono da CodeDeploy, gli altri sono da te. Se riscontri vari ritardi in quelli in grassetto, contatta l'assistenza AWS, ma in caso contrario è probabile che tu debba esaminare i tuoi hook.


Sì, i miei script sono semplici e veloci. È il passaggio del pacchetto Download che richiede spesso minuti per essere eseguito e il mio progetto non è così grande; altrettanto spesso ci vogliono solo pochi secondi. Non ho il piano di supporto per gli sviluppatori, e non sono disposto a pagare solo per questo, quindi lo lascerò per ora.
Jasper Kennis,

Controllato di nuovo, il problema deve essere la larghezza di banda; stiamo usando un tipo di istanza piccolo per il nostro server di gestione temporanea e una volta più grande per la produzione, ed è sempre la gestione temporanea a essere lenta.
Jasper Kennis,

@JasperKennis Sì, i tipi di istanza più piccoli possono essere abbastanza limitati dalla larghezza di banda, in particolare se sei su un host con vicini rumorosi. Avrebbe senso.
Ceejayoz,

21

BlockTraffic e AllowTraffic

La semplice regolazione delle impostazioni del controllo dello stato del gruppo target può radersi un paio di minuti.

Prima

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Dopo

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Spiegazione

Questo funziona perché BlockTraffice AllowTrafficsia attesa per i controlli sanitari di successo. L'intervallo di controllo dello stato predefinito è 1 controllo ogni 30 secondi e un controllo dello stato corretto richiede 5 200 risposte consecutive. Pertanto, per impostazione predefinita sono necessari più di 2 minuti e 30 secondi. E questo è per ogni istanza EC2. Ridurre l'intervallo di controllo dello stato e limitare il numero di controlli necessari necessari migliorerà i tempi di implementazione.


Dopo aver apportato questa modifica, ottengo Script at specified location: ... failed to complete in 5 seconds. (è impostato in appspec.yml-> hook: -> BeforeInstall :) (per favore dimmi perché)
Yevgeniy Afanasyev il

Esiste un timeout impostato nella configurazione di BeforeInstall? docs.aws.amazon.com/codedeploy/latest/userguide/…
Peter Tao,

Grazie, ora vedo che non è correlato, ma piuttosto una coincidenza.
Yevgeniy Afanasyev il

2

Un'altra impostazione da verificare è il "Ritardo di cancellazione" del gruppo target. Le mie impostazioni di controllo dello stato erano già basse e questo era il collo di bottiglia nel mio caso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.