为什么当我将后端定义为动态并且我的任务队列配置了高处理速率时,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大约10s,延迟225ms,但任务队列显示强制速率为15 / s而不是我定义的30 / s。就好像应用程序引擎调度程序没有意识到我被设置为动态并且它强制速率为15 / s来处理一个实例。作为测试,我改变了我的后端定义来定义4个实例而不是动态。当我运行dataload时,所有4个实例都接收流量,我的强制执行速率保持在30 / s而不是限制到15秒,并且我的吞吐量上升(每个实例的QPS约为7.5,延迟时间为310毫秒)我真的希望数据邮件运行为尽可能快,所以我愿意打开大量实例来尽可能并行处理多个记录,我希望这些实例在完成后关闭。
有没有人见过类似问题 - 谷歌的任何人都可以评论吗?