微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AppEngine队列中每个实例10个正在运行的任务的硬限制

如何解决AppEngine队列中每个实例10个正在运行的任务的硬限制

我有一个与App Engine队列(以前称为“推送队列”)连接的GAE项目,该项目应一次处理多个任务(每个运行实例的目标是约30个任务)。不知何故,我面临着10 * [COUNT OF RUNNING INSTANCES]的硬极限,无法超越。由于我尝试了几种不同的设置和方法,所以希望你们能对此有所了解。

TL; DR

GAE /长时间运行任务的队列设置,使用Symfony用PHP编写,使用后端实例(必需),每个实例仅面临10个正在运行的任务的硬限制。有提示吗?

用例

我最初的用例涉及任务处理程序,该任务处理程序从API提取数据,处理并将其存储到BigQuery。平均而言,单个任务处理程序每​​分钟执行约1.500个请求。对于规模,我希望有10个正在运行的实例(实例类B4_1G)与并行的300多个运行任务。

我创建了一个小型存储库,可以在Github上使用here,在此我简化了用例。为此,我从Google本身获取了简单的示例代码。 请阅读有关how to reproduce我的问题的分步指南。

依赖项

任务运行时间很长(每个〜15分钟)。由于GAE Frontend 实例在10分钟内被剪切的限制,我使用了 Backend实例(也是为了获得更多的内存容量)。

问题

通常来说,我无法运行比提到的10 * [COUNT OF RUNNING INSTANCES]更多的任务。我做了很多尝试(见下文)。

在生产环境中运行原始代码,每个实例的内存使用量约为30%(如果使用B4)。换句话说:说到资源,一个实例将能够处理更多任务,但它最多可保留70%的RAM。

“某事”将我限制在这个硬限制10。我不知道这个限制可能在哪里。也许只是某个地方的一个小标志。 :-(

我已经尝试过的东西

所有这些显然都没有克服限制的影响。

  • 在全新项目(甚至帐户)中试用了示例代码
  • 已与Google Cloud支持人员联系(进行了大量沟通,没有真正的解决方案)
    • 他们不相信如此严格的限制
    • 最可行的信息是:需要为GAE本身定义max_concurrent_requests
    • 但这对于basic_scaling来说是不可能的,因此对于后端实例来说是不可能的。
    • 即使有 Frontend 实例,我也无法超过限制。
  • 尝试运行更多实例和/或更大实例类型(最多B4_1G
  • 尝试了前端实例(不是我的生产用例,而是作为测试用例)
  • 使用entrypoint--workers标志配置的GAE(请参阅docs
    • 仅对1个正在运行的实例尝试了具有GAE max_concurrent_requests: 15的队列--workers=15
  • 尝试了PHP72和PHP73环境
  • 根据文档,使用app.yamlqueue.yaml的所有参数

由于我真的很烦恼,所以我很乐意看到任何类型的提示。也许,您甚至可以一边运行并测试我的示例代码

非常感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。