奇怪"超额配额:"没有进一步诊断的错误

时间:2014-08-07 11:54:31

标签: google-app-engine google-cloud-storage

我正在运行并行工作,将数据从Heroku复制到Google云端存储,最终复制到Bigquery。我现在正在这样做的方法是将查询范围[61500000,62000000]中的ID分成40个任务队列任务,并在每个任务处理程序内负责子范围说[ 61500000,61512500)。在每个任务队列任务处理程序中,它产生了3个goroutine来并行地查询我们的Heroku API,还有一个额外的goroutine来插入Google云端存储。 3 HTTP API输入goroutines泵数据到GCS插入goroutine的方式是通过io.Pipe()。

然而,出于某种原因,除了玩具工作量之外,我无法让它工作。实际上每次都会有一些碎片因错误而失败:

“发布https://www.googleapis.com/upload/storage/v1beta2/b/ethereal-fort-637.appspot.com/o?alt=json&uploadType=multipart:超额配额:”

从storage.ObjectsInsertCall.Do()返回。

我到处查看了我们达到结算应用配额的可能位置: * urlfetch total限制developers.google.com/appengine/docs/quotas#UrlFetch *实例内存developers.google.com/appengine/docs/go/modules/#Go_Instance_scaling_and_class 但仍无法找到原因。 下面我解释为什么我排除了上述可能性:

  • urlfetch总限额 在3个goroutines中使用urlfetch来查询我们的API服务器以获取JSON数据。然后,这3个goroutine处理数据并通过io.Pipe()将它们发送到GCS goroutine。代码看起来像

    cl:= urlfetch.Client(c) resp,错误:= cl.Get(“pic-collage.com / ...”) if err!= nil {   if appengine.IsOverQuota(err){     c.Errorf(“collageJSONByID over quota:%v”,错误)   }   回报错误 }

然而,虽然我们看到许多“POST www.googleapis.com/upload/storage/v1beta2 ...:Over quota:”错误,但我们从来没有看到与urlfetches相关的日志“collageJSONByID ...”到我们的Heroku服务器

  • 背景记忆 我们正在使用B1实例来处理具有128MB RAM的作业。在我们的整个运行过程中,我们从我们的appengine控制台看到,每个实例的内存使用量始终远低于30MB。

我还在"Over quota" when using GCS json-api from App Engine中描述的serviceaccounts中应用了缓存修复程序,但问题仍然存在。

我想知道我们是否可以获得有关我们超出的特定App Engine配额的更多信息?或者,Google云端存储还有其他隐藏的配额,文档中没有提到这些配额?

1 个答案:

答案 0 :(得分:0)

当您达到每日结算限额时,可能会发生Over quota:消息。如果您已为自己的应用程序启用了结算功能,请确保每日预算足够高,以满足您的使用需求。