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”的后端实例。后端实例 CPU 以大约 35% 到 45% 的速度运行,QPS 约为 10 秒,延迟为 225 毫秒,但任务队列显示的强制速率为 15/s,而不是我定义的 30/s。就好像应用程序引擎调度程序没有意识到我设置为动态并且它强制将速率设置为 15/s 以仅处理一个实例。作为测试,我将后端定义更改为定义 4 个实例而不是动态的。当我运行数据加载时,所有 4 个实例都接收到流量,我的强制速率保持在 30/s 而不是限制到 15s,并且我的吞吐量上升(QPS 大约 7.

有没有人看到过类似的问题 - 谷歌的任何人都可以发表评论吗?

4

0 回答 0