【发布时间】:2014-06-24 13:42:08
【问题描述】:
Appengine 为多租户应用程序站点上的每个命中或每个请求创建延迟队列(/_ah/queue/deferred),因此创建和运行大量队列,导致错误结果以及过度使用导致超出配额的队列。
此应用程序在作为多租户应用程序的一部分的数据存储操作之前设置命名空间,即NamespaceManger.set(somenamespace)。没有完成与队列相关的编码,默认队列由 appengine 自动创建,每次操作都会生成多个导致问题的队列。
提前致谢。感谢任何帮助。
在我当前的应用程序中,我们使用 GAE Cloud Endpoint 连接到 android 和 web 模块。在这个应用程序中,我们根据命名空间(多租户)应用程序分离了数据存储和内存缓存。我发现的观察结果是,对于 android 或 web 模块的每次调用,日志文件中都有一个延迟队列条目。这导致我的后端实例小时数被消耗。我不明白的是,由于我没有使用 Taskqueue 或没有为相同的方式/谁触发延迟队列进行配置,以及解决此问题的可能方法是什么
【问题讨论】:
-
没有足够的信息来回答。发布您的 app.yaml 以及其中包含
deferred的任何代码。 -
@GAEfan @GAEfan :我没有使用任务队列,并且在我的代码中没有相同的条目,所以没有延迟代码。至于 app.yaml
<application><APPID></application><version>1</version> <threadsafe>true</threadsafe> <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> /system-properties> <sessions-enabled>true</sessions-enabled> <async-session-persistence enabled="true"/> <sessions-enabled>true</sessions-enabled> <async-session-persistence enabled="true"/> -
@GAEfan 在我当前的应用程序中,我们使用 GAE Cloud Endpoint 连接到 android 和 web 模块。在这个应用程序中,我们根据命名空间(多租户)应用程序分离了数据存储和内存缓存。我发现的观察结果是,对于 android 或 web 模块的每次调用,日志文件中都有一个延迟队列条目。这导致我的后端实例小时数被消耗。我无法理解的是,由于我没有使用 Taskqueue 或没有为触发延迟队列的相同方式/谁进行任何配置,因此也是解决方案
标签: java google-app-engine google-cloud-endpoints task-queue multi-tenant