[解決済み] Google App Engine Flexible envの価格設定、500円のレッスン
質問
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
どなたか、この件に光を当てる手助けをしていただけませんか。なぜこれほど多くのリソースが必要なのか、私は知ることができなかったのです。
助けてくれてありがとうございます。
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 を使用したい場合の推奨事項。
-
何よりもまず、請求書の予算とアラートを設定し、自動的に CC に請求される高額な請求書に驚かないようにしましょう。 https://cloud.google.com/billing/docs/how-to/budgets
-
テスト環境では、複数のバージョンを必要としないことが多いので、デプロイ時に以下のコマンドを使用します。
$ gcloud app deploy --version v1
-
を更新してください。 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日の利用限度額を設定する
詳しくはこちらのブログ記事をご覧ください。 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;のみ"。
関連
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】Node.jsのホスト名/IPが証明書のaltnamesと一致しない。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] node.js - リクエスト - "emitter.setMaxListeners() "はどのように?
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。
-
[解決済み] Google App EngineとGoogle Compute Engineの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] joiライブラリを使用して2つの時間を比較する方法
-
[解決済み] Heroku "状態が起動から停止に変更されました SIGTERMで全プロセスを停止"
-
[解決済み] S3 Bucket に何かを送信しようとすると、AWS Missing credentials が表示される (Node.js)
-
[解決済み] MongoNetworkError: 最初の接続でサーバー [localhost:27017] への接続に失敗 [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 。
-
[解決済み] Google App EngineとGoogle Compute Engineの違いは何ですか?