AWS CodeDeployを高速化する方法はありますか


15

AWS CodeDeployを使用してサイトをデプロイしていますが、速度があまり一貫していないことに気付きました。非常に高速な場合もありますが、展開の各ステップに数分かかる場合もあります。これは、バグや機能停止の場合に、展開を高速で実行する必要がある場合に非常に面倒です。

ただし、CodeDeployの速度に関するドキュメントは見つかりません。また、遅いときや速いときにロジックを見つけることもできません。それをスピードアップする方法はありますか、そして何がそんなに時間がかかっているかを知る方法はありますか?

回答:


10

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

ターゲットグループのヘルスチェック設定を調整するだけで、数分かかる可能性があります。

ここに画像の説明を入力してください ここに画像の説明を入力してください

ここに画像の説明を入力してください ここに画像の説明を入力してください

説明

これはBlockTrafficAllowTraffic両方とも正常なヘルスチェックを待機するために機能します。デフォルトのヘルスチェック間隔は30秒ごとに1回のチェックで、正常なヘルスチェックには5回連続して200回の応答が必要です。したがって、デフォルトでは2分30秒以上かかります。そして、それはすべてのEC2インスタンスについてです。ヘルスチェックの間隔を短くし、必要な成功したチェックの数を制限すると、展開時間が改善されます。


この変更を行った後、私は得ていScript at specified location: ... failed to complete in 5 secondsます。> BeforeInstall :)()理由を教えてください- :(それがappspec.yml->フックに設定されている
たYevgeniy Afanasyev

BeforeInstall構成にタイムアウトが設定されていますか?docs.aws.amazon.com/codedeploy/latest/userguide/...
ピーター・タオ

ありがとう、今では私はそれが関連しているのではなく、むしろ偶然だとわかりました。
エフゲニー・アファナシエフ

2

チェックするもう1つの設定は、ターゲットグループの「登録解除遅延」です。私のヘルスチェック設定はすでに低く、これが私の場合のボトルネックでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.