新しい価格表の最適化

画像

App Engineは、より明るい未来とリソースを計算するための新しい方法論に向けて本格的です。 パニックとカオスはAEの下で開発者の仲間入りをしました-あまりにも多くが厳重に守られています(または、会社は何が起こるかを本当に知りません)。 しかし、今日は、ブロブストアが無料のクォータに含まれるかどうか、またはブロブストアへのアクセスに単独で料金を支払う必要があるかどうかについては説明しません。 新しい価格が高すぎる場合の行き先については説明しません。また、Googleが新しいトラックへの移行を緩和しようとしている50ドルの「景品」については説明しません(特に、この良いニュースはすべてのアプリケーション管理者に送信されたため)。



今日はアプリケーションの最適化に焦点を当てます。 プロセッサ時間とメモリの最小消費のためにアプリケーションをすでに最適化しましたか? それを忘れて、今では二次的であり、あなたの血液は他の基準によって除去されます。



エントリー。



新しい価格への切り替えプロセスの一環として、アプリケーション使用レポートに含まれるリソースのセットを更新しました。 プロセッサ時間を断念し、インスタンスの作業時間数(フロントエンドとバックエンド)、API呼び出しの数、保存されているデータの量、トラフィックを考慮したシステムに移行します。 詳細はFAQをご覧ください



新しい価格設定モデルを開始する前に、比較アカウントをリリースしたため、コストにどのように影響するかを確認できます。 価格の変更が有効になる前にアプリケーションの最適化を開始し、最適化がアカウントにどのように影響するかを確認できます。



この記事では、新しい使用状況レポートの解釈方法と、リソースの管理に使用できるいくつかの戦略と、それらがアプリケーションのパフォーマンスにどのように影響するかを示します。



古いレポートと新しいレポートを調査します。



毎日の使用状況レポートは、 _https://appengine.google.com/billing/history?&app_id=$APP_ID



ある[請求履歴]ページのコントロールパネルにあります。 いずれかのレポートの横にある[+]アイコンをクリックすると、1日の詳細が展開され、新しいリソースと古いリソースを確認できます。 アプリケーションの使用状況レポートのプレビューは次のようになります。

画像

アカウントのパラメーターのリストを調べて、それらの意味を説明し、いくつかのリソース管理戦略を提供し、それらがアプリケーションのパフォーマンスにどのように影響するかを説明します。



インスタンスの使用を管理します。



新しいアカウントの最初の2行は、アプリケーションインスタンスの使用に関するものです。 インスタンスについては、ドキュメントをご覧ください。 コントロールパネルのアプリケーションで使用されているインスタンスの数は、 _https://appengine.google.com/instances?&app_id=$APP_ID



または、 _https://appengine.google.com/dashboard?&app_id=$APP_ID



ドロップダウンリストで_https://appengine.google.com/dashboard?&app_id=$APP_ID



インスタンス]チャートを選択する_https://appengine.google.com/dashboard?&app_id=$APP_ID







スケジューラApp Engine。



App Engineは、スケジューリングアルゴリズムを使用して、アプリケーションがトラフィックを処理するために必要なインスタンスの数を決定します。 アプリケーションが受信した各リクエストに対して、利用可能なインスタンス(アイドル状態または並列haproリクエストを受け入れるインスタンス)にサービスを提供するか、リクエストを待機キューに送信するか、このリクエストの新しいインスタンスを開始するかを決定します。 使用可能なインスタンス、アプリケーションがリクエストに応答する速度(レイテンシ)、リクエストを処理する前に新しいインスタンスを開始して初期化するのにかかる時間に基づいて決定します。 ほとんどの場合、新しいインスタンスを開始することでリクエストをより速く処理できると考えられる場合、新しいインスタンスを開始します。



もちろん、アプリケーショントラフィックには一貫性がないため、スケジューラはアプリケーションのアイドルインスタンスの数を監視し続けます。 これらのインスタンスは、ユーザーへの顕著な遅延なしにトラフィックの急増に対応するのに役立ちます。 スケジューラーは、アプリケーションのアイドルインスタンスが多すぎると判断した場合、リソースを撤回し、インスタンスの1つを停止します。



使用されるインスタンスの数を減らすための戦略。



レイテンシーの削減。


アプリケーションの遅延は、アプリケーションのサービスに必要なインスタンスの数に大きな影響を与えます。 したがって、遅延を減らすと、必要なインスタンスの数に大きく影響する可能性があります。 待ち時間を短縮する手順のリストは次のとおりです。



スケジューラを手動で調整します。


コントロールパネルの[アプリケーションの設定]ページには、スケジューラがアプリケーションインスタンスを管理するために使用するいくつかの変数を設定するのに役立つ2つのスライダーがあります。 以下に、パフォーマンスとリソース使用の妥協点を見つけるためにそれらを使用する方法の簡単な説明を示します。



Javaで同時要求を有効にします。


リリース1.4.3では 、アプリケーションのインスタンスがJavaで複数の同時リクエストを処理する機能を導入しました。 このオプションを有効にすると、必要なインスタンスの数が減りますが、アプリケーションが正しく機能するには、アプリケーションがスレッドセーフである必要があります。 Javaのドキュメントで同時クエリの詳細を読むことができます



:Pythonのマルチスレッドは、作業計画で利用可能なPython 2.7のリリースまで利用できません。 Python 2.7では、マルチスレッドインスタンスはより多くのリクエストを処理でき、API応答のブロックを待機しているときにアイドル状態の場合、インスタンス時間のクォータを消費しません。 Pythonは現在、一度に1つのインスタンスに対して複数のリクエストを処理する機能をサポートしておらず、すべての開発者が同時リクエストに適応できるようにするため、2011年11月20日までフロントエンドインスタンスの稼働時間を50%割引します。Python2.7は終了しましたテスト。



アプリケーションストレージ管理。



App Engineは、データウェアハウス内のオブジェクトのサイズ、データを提供するために必要なインデックスのサイズ、およびブロブストア内のデータの量に基づいてストレージコストを計算します。

インデックスに必要以上のデータが含まれているかどうかを確認するために実行できる手順は次のとおりです。





データストアを使用して管理します。



新しいモデルでは、(現在使用されているCPUリソースの代わりに)データストアで実行される操作の数を考慮します。 データストアリソースの消費を削減し、データストアリクエストの待機時間を短縮できるいくつかの戦略:





トラフィック管理。



発信トラフィックを削減する主な方法は、応答で適切なCache-Control



ヘッダーを設定し、静的ファイル( JavaPython )の妥当な有効期限を設定できる場合ですCache-Control: public



ヘッダーを使用すると、プロキシとユーザーブラウザーは割り当てられた時間の応答をキャッシュできます。



着信トラフィックは、ユーザーがアプリケーションに送信するデータ量であるため、制御がより困難です。 ただし、これはDoS保護サービス( JavaPython )に言及する良い機会です 。これにより、不要なIPからのトラフィックをブロックできます。



他のリソースの管理。



レポートの最後の値は、Email、XMPP、およびChannel APIの使用です。 これらのAPIについては、それらを効果的に使用することを確認するのが最善です。 APIの使用をテストする最良の方法の1つは、Appstats( PythonJava )を使用して、アプリケーションが不要な呼び出しを行わないようにすることです。 また、エラーレベルを確認し、可能性のある不正な呼び出しを探すことを常に確認することをお勧めします。 場合によっては、そのような呼び出しを事前にキャッチすることが可能です。



All Articles