1. ホーム
  2. node.js

[解決済み] Google App Engine Flexible envの価格設定、500円のレッスン

2022-07-03 06:35:18

質問

Nodejs on App Engine Flexible envのチュートリアルに従いました。 https://cloud.google.com/nodejs/getting-started/hello-world

チュートリアルのデプロイとテストに成功したので、少し実験的にコードを変更してデプロイに成功しました...そして、これはテスト環境(公開ではない)なので、実行したままにしておきました。

1 か月後、私は Google から 370 ドル以上の請求書を受け取りました!

トランザクションの詳細では、次のように表示されました。

2017年10月1日~31日 App Engine Flex Instance RAM: 5948.774 Gibibyte-hours(ギガバイト時間 ([myproject]) $42.24

2017年10月1日~10月31日 App Engine Flex Instance Core Hours: 5948.774 時間 ([MYPROJECT]) $312.91

ほぼ0リクエストのこのテスト環境で、なぜ約6000時間のリソースが必要だったのでしょうか?最悪の場合、720 時間、1 時間あたり 0.05 ドルで 1 か月フルタイムで稼働すると仮定すると、~$40 のコストがかかることになります。 https://cloud.google.com/appengine/pricing

どなたか、この件に光を当てる手助けをしていただけませんか。なぜこれほど多くのリソースが必要なのか、私は知ることができなかったのです。

助けてくれてありがとうございます。

データとしては、直近1ヶ月のアクセス数です(基本的に0)。

また、インスタンスデータ

UPDATE nodemon を依存関係として追加し、私の "nmp start" スクリプトの一部としてそれを追加したことです。しかし、これで6000時間のリソースを説明できるかどうかは疑問です。

  "scripts": {
    "deploy": "gcloud app deploy",
    "start": "nodemon app.js",
    "dev": "nodemon app js",
    "lint": "samples lint",
    "pretest": "npm run lint",
    "system-test": "samples test app",
    "test": "npm run system-test",
    "e2e-test": "samples test deploy"
  },

App.yaml (デフォルト、チュートリアルから変更なし)

runtime: nodejs
env: flex

どのように解決するのですか?

Google と何度もやりとりし、何時間もブログを読み、レポートを見た後、ようやく何が起こったのかの説明を見つけました。他の人がこの問題の犠牲者にならないように、私の提案とともにここに投稿します。

注: これは一部の人にとっては当たり前のことかもしれませんが、新しい GAE ユーザーである私にとっては、これらすべてが初めてのことでした。

要するに、GAE にデプロイして次のコマンドを使用すると、" $ gcloud app deploy とすると、新しいバージョンが作成され、それがデフォルトとして設定されますが、さらに重要なことに、デプロイされた以前のバージョンは削除されません。

バージョンとインスタンスの詳細については、こちらを参照してください。 https://cloud.google.com/appengine/docs/standard/python/an-overview-of-app-engine

私の場合、知らないうちに、シンプルな node アプリの複数のバージョンを作成していました。これらのバージョンは、エラーに続いて切り替える必要がある場合に備えて、まだ実行中です。しかし、これらのバージョンもインスタンスを必要とし、app.yaml に記載されていない限り、デフォルトでは 2 つのインスタンスが使用されます。

Google は言います。

App Engine はデフォルトで、負荷に合わせて稼働するインスタンスの数を増減させます。 そのため、アイドル状態のインスタンスを最小限に抑えながら、常に一貫したパフォーマンスを提供することができます。 アプリに常に安定したパフォーマンスを提供し、アイドル状態のインスタンスを最小化してコストを削減します。 コストを削減できます。

しかし、私の経験では、これはそうではありませんでした。先ほど言ったように、私は node アプリケーションを nodemon でプッシュしましたが、これがエラーを引き起こしていたようです。

結局、チュートリアルに従ってプロジェクトをシャットダウンせず、2 つのインスタンスを持つ 4 つのバージョンを 1.5 か月間フルタイムで稼働させ、0 リクエストを提供し、多くのエラー メッセージを生成し、500 ドルのコストがかかりました。

まだ gae flex env を使用したい場合の推奨事項。

  1. 何よりもまず、請求書の予算とアラートを設定し、自動的に CC に請求される高額な請求書に驚かないようにしましょう。 https://cloud.google.com/billing/docs/how-to/budgets

  2. テスト環境では、複数のバージョンを必要としないことが多いので、デプロイ時に以下のコマンドを使用します。

    $ gcloud app deploy --version v1

  3. を更新してください。 app.yaml を更新して、最小限のリソースで1つのインスタンスのみを強制します。

runtime: nodejs
env: flex

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

  1. 1日の利用限度額を設定する

詳しくはこちらのブログ記事をご覧ください。 https://medium.com/google-cloud/three-simple-steps-to-save-costs-when-prototyping-with-app-engine-flexible-environment-104fc6736495

これから学び、実験しようとしている人たちを守るために、これらの手順のいくつかがチュートリアルに含まれていればよかったのですが、そうではありませんでした。

Google App EngineのFlex envは、これらのすべての詳細を知らない場合は、トリッキーなことができます。友人が Heroku を教えてくれましたが、Heroku にはセット価格と Free/Hobby の両方のオファーがあります。私はすぐにそこに新しいノード アプリをプッシュすることができ、それは魅力のように動作しました! https://www.heroku.com/pricing

この教訓を学ぶために500ドルのコストが、私はこのGoogle App EngineのFlex Env.を見て他の人に役立つことを願って、それはquot;のみ"。