【问题标题】:Google Cloud Pub/Sub on Google App Engine hits QPS limit too soonGoogle App Engine 上的 Google Cloud Pub/Sub 过早达到 QPS 限制
【发布时间】:2016-11-30 18:39:30
【问题描述】:

每秒大约 90 或 100 个调用

pubsub_client.projects().topics().publish(topic='projects/xxxx',body=body).execute(num_retries=0)

每秒从 Google App Engine 应用到 Google Cloud Pub/Sub,结果

HttpError: <HttpError 429 when requesting https://pubsub.googleapis.com/v1/projects/xxxx:publish?alt=json returned "Request throttled due to user QPS limit being reached.">

我知道管理操作有 100 QPS 的限制,但发布到主题肯定不是管理操作?我知道 pub/sub 应该支持每秒数百万次操作,所以我知道有问题。

任何帮助或见解将不胜感激。我需要达到每秒至少 300 次发布,尝试使用 pubsub 简化现有实现。我认为这可能是实现的一个错误。

我在 Google App Engine python 2.7 上运行此代码 - 使用 appengine 运行时,而不是灵活的运行时,因为它尚未获准用于生产代码。

【问题讨论】:

    标签: python-2.7 google-app-engine google-app-engine-python google-cloud-pubsub


    【解决方案1】:

    请注意,发布者配额不是根据 QPS,而是根据吞吐量。默认限制为 100MB/秒。有关详细信息,请参阅Quotas documentation。根据您发送的邮件大小,您可能会遇到这些限制。

    发布中的“已达到用户 QPS 限制”消息通常表示以下三种情况之一:

    1. 您正在以高于默认 100MB/s 配额的吞吐量发布。如果是这种情况,您可以通过点击Pub/Sub Quota页面上的“申请更高配额”来申请更多配额。

    2. 您未针对正确的 Cloud 项目进行身份验证。如果您在与定义主题的项目不同的 Cloud 项目中通过身份验证或运行 Google App Engine 实例,则您遇到的配额可能未在您期望的项目中定义。更多信息可以在Google Application Defaults Credentials page找到。

    3. 您在Quota page 中手动设置了配额,这就是您遇到的限制。

    【讨论】:

    • 1) 每条消息大约 100 个字节(它是一个字典,其中有几个键/值转换为 json,然后是 b64 编码),所以不是这样。 300*100 = 30kb/sec 2) 我使用默认凭据并尝试使用 .json 文件中的特定凭据,在这两种情况下都存在同样的问题。 3)尚未手动设置配额,但会检查。这是一个快速的后续问题:对一个主题的发布是否有限制?我只发布一个主题。
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 2018-08-09
    • 2022-01-13
    • 2018-07-05
    • 2021-12-12
    • 1970-01-01
    • 2019-12-26
    • 2017-09-22
    相关资源
    最近更新 更多