Appengine 会为 Multi-Tenancy 应用程序站点上的每次点击或每个请求创建延迟队列 (/_ah/queue/deferred),因此会创建并运行大量队列,从而给出错误的结果以及过度使用队列导致超出配额。
此应用程序在数据存储操作之前设置命名空间,即 NamespaceManger.set(somenamespace)
作为 Multi-Tenancy 应用程序的一部分。没有完成与队列相关的编码,默认队列由应用程序引擎自动创建,每次操作都会生成多个队列,这会导致问题。
提前致谢。非常感谢任何帮助。
在我当前的应用程序中,我们使用 GAE Cloud Endpoint 连接到 Android 和 Web 模块。在此应用程序中,我们基于命名空间( Multi-Tenancy )应用程序分离了数据存储和内存缓存。我发现,对于 android 或 web 模块的每次调用,日志文件中都有一个延迟队列条目。这导致我的后端实例时间被消耗。我不明白的是,由于我没有使用 Taskqueue 或没有对如何/谁触发延迟队列进行相同的配置,以及解决此问题的可能方法是什么
最佳答案
该问题是由于您的 app.yaml 中启用了 async-session-persistence 造成的。
启用此功能后,您的应用程序会将您的 HTTP session 日期写入数据存储区。该过程是使用延迟任务队列完成的。当该任务队列失败时,系统会不断重试。
因此,要解决此问题,您可以从 app.yaml 中删除此代码
<async-session-persistence enabled="true"/>
或者 您必须调试错误以避免任务队列失败。
希望这有帮助。祝一切顺利。
关于java - Google appengine 为 Multi-Tenancy 应用程序中的所有请求创建延迟队列(/_ah/queue/__deferred__),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388217/