2

バックエンドを動的として定義し、タスク キューが高い処理速度で構成されている場合、Google AppEngine の動的バックエンドが自動スケーリングされないのはなぜですか?

私のアプリケーションは、大規模な CSV ファイル (100,000 以上のレコード) のデータをデータストアにロードする必要があります。これを実現するために、バックエンドを使用してファイルを読み取り、レコードを同じバックエンドのタスク キューにドロップして、レコードをデータストアに並行して書き込むことができるようにしています。次の方法でキューをセットアップしました。

<queue>
    <name>product-dataload</name>
    <rate>30/s</rate>
    <bucket-size>40</bucket-size>
    <retry-parameters>
        <task-retry-limit>2</task-retry-limit>
    </retry-parameters>
</queue>

私のバックエンドは次のように定義されています。

<backend name="dataloader">
    <class>B1</class>
    <options>
        <dynamic>true</dynamic>
    </options>
</backend>

私が観察したのは、「dataloader」のバックエンド インスタンスが 1 つだけ作成されていることです。バックエンド インスタンスの CPU は約 35% から 45% で実行され、QPS は約 10 秒、レイテンシは 225 ミリ秒ですが、タスク キューには、定義した 30/秒ではなく、15/秒の強制レートが表示されます。App Engine スケジューラーは、私が動的に設定されていることを認識しておらず、1 つのインスタンスだけを処理するためにレートを 15/s に強制しているようです。テストとして、動的ではなく 4 つのインスタンスを定義するようにバックエンド定義を変更しました。データロードを実行すると、4 つのインスタンスすべてがトラフィックを受信し、強制レートは 15 秒にスロットリングするのではなく 30/秒のままになり、スループットが上がります (QPS は約 7.

似たような問題を見た人はいますか? Google の誰でもコメントできますか?

4

0 に答える 0