2013-08-07 11 views
12

実際にインスタンスの数を制限するオプションが必要です。 アプリケーション設定メニューで行うことができるのは、IDLEインスタンスの最大数を制限することです。意図したとおりに動作するかどうかわかりません。私は最大アイドルインスタンスを1に設定し、最小保留時間を15秒に設定していますが、依然としてリクエストがない状態で2つのインスタンスが時折実行されることがあります。彼らはアイドル状態の15分後に閉じなければならないのでしょうか?そして、なぜ15秒間の遅延に達していないと考えても、その設定で秒のインスタンスを起動するのはなぜですか?Appengine - インスタンスの数を制限する

私は簡単な「what's my IP」のPythonアプリケーションを実行します。これは本当に高性能を必要としません。応答が100msまたは5秒後に実際に変化しないということです。重要なことは、インスタンスが1つしか実行されていないことです。そのため、毎日28のインスタンス時間が使い果たされることはありません。

+1

あなたは新しいモジュールconfigsを使用しようとしましたか:https://developers.google.com/appengine/docs/python/modules/#config – Faisal

+0

いいえ、私は持っていませんが、試してみる。ありがとう! – Chris

+1

"インスタンスクラスF1は '自動'スケーリング値でのみ許可されます。 Bummersでは、8時間に制限されている手動スケーリングのためのバックエンドしか使用できません。 :| – Chris

答えて

13

私のアプリは現在トラフィックの数だけしか持っていないので、少しでもドルを支払うことは私にとっては問題です。学習して、インスタンスクラスを最適化する方法について多くのオプションを試した後。実行中のアプリケーションで、Google AppengineでBilling Status Enabledを有効にして、私に最も低いbilling ratesを与える以下の設定が見つかりました。

F1クラスを使用してFrontendインスタンスを設定します。
ここではyaml版のコードです。

instance_class: F1 
automatic_scaling: 
    max_idle_instances: 1 # default value 
    min_pending_latency: automatic # default value 
    max_pending_latency: 30ms 

私はB1クラスを使用してバックエンドインスタンスを設定します。
ここではyaml版のコードです。

instance_class: B1 
basic_scaling: 
    max_instances: 1 
    idle_timeout: 10m 

そして、ここではappeengine.web.xmlに置くためのコードである通常

<threadsafe>true</threadsafe> 
<instance-class>B1</instance-class> 
<basic-scaling> 
<max-instances>1</max-instances> 
<idle-timeout>10m</idle-timeout> 
</basic-scaling> 

私は4つのモジュール、F1クラスで2つのモジュール、及び2つのモジュールを実行しています(Mavenを使用してJavaをコンパイルする場合) B1クラスで。彼らは毎日私に0を要した。しかし、私のサイトがトラフィックに忙しそうになったときに、クラスをF2とB2に上げて、総一日の費用がUS $ 0.50未満です。

ここ

が請求可能なインスタンス減らすためにいくつかのヒントがあります:あなたのクラスFモジュールが28 hours free daily quota以上実行した場合

  • を、Class Bで別のモジュールを作成することを検討してください。これで別の​​が得られます。 crontaskまたはbackgroundのような他のジョブを実行するために使用することができます。 /_ah/stopの自動シャットダウンが正しく機能することを確認してください。長いアイドル状態のインスタンスをカウントさせないようにしてください。
  • ホームページやランディングページを最小限のインスタンスで簡単に実行できます。可能であれば、複数のインスタンス。あなたの訪問者があなたのページで何かをした場合にだけ、もっと多くのインスタンスを実行させてください。 blobstoreの無料割り当てを取ることで、あなたのサイトを最適化するためにdata storage、およびdatastoreを考えてみましょう。 Google Hosted Librariesのスクリプトを使用して、出力帯域幅を最小限に抑えることもできます。
  • トラフィックリクエストがモジュールのハンドラに送信されるときは、必ずインスタンスを実行します。したがって、static cache expirationの設定の横に、Google Cloud Storage(GCS)client librarygsutilを使用して、バケットからhtml、画像、js、cssなどの静的ファイルを配信できるようにすることをおすすめします。
    public-readと設定します。このスキームでは、リクエストによって影響を受けないため、インスタンスが大幅に削減されます。 GCS Monthly Pricingは、合計累計値がHourly Instance Costである毎月の請求書に比べてはるかに安いと考えるかもしれません。
    hereのように、サブドメインwwwを含む)を使用してバケットをウェブサイトとして設定する方法を確認します。また、空白のドメインを使用したい場合は、A(ホスト)とAAAAをsetでwwwにリダイレクトするか、裸のドメインをドメインとして設定できる場合は完全に独立させることもできますAlias/AName GCS (c.storage.googleapis.com)に直接送信してください。
  • アプリケーションがデータ操作に基づいて動的に実行されている場合、MySQLなどのすべてのタイプのデータベース、インスタンスまたは操作カウンタも実行されることに注意する必要があります。不要なボットトラフィックをブロックし、動的ページを提供していないことを確認してください。 "Datastore Small Operations"も使用することをお勧めします。他のデータベース操作と比較して、この種のデータ操作は無料です。もちろん、Quercusのように使用するには、コードを最適化する必要があります。そこにいくつかの素晴らしい議論があるhereherehere
+0

最後の箇条書きに記載されている方法は、利用規約に違反しています。 https://cloud.google.com/terms/?csw=1: "制限事項:顧客は、複数のアプリケーション、アカウント、またはプロジェクトを作成して、1つのアプリケーション、アカウント、またはプロジェクトとしてシミュレートしたり、または料金を被ることを避けるための方法で本サービスにアクセスしてください。 –

+0

注意。私は最後の弾丸を完全に取り出した。条件を指摘してくれてありがとう。 – hyip

関連する問題