当App Engine(Java)启动新实例时,如何确保任务队列Memcache crons在它们之间共享?

时间:2011-01-18 14:42:44

标签: java google-app-engine cron memcached task-queue

这是一个问题,我的应用程序在网站上偶尔遇到CPU限制峰值,其中几乎所有工作都是由于cron任务完成的,每次运行频繁,以调用重新填充内存缓存的任务队列。 / p>

最近,该网站收到了大量的流量高峰,导致多个实例被旋转。

然而,令我惊讶的是,在那些日子里我不得不降低Memcache任务的频率,尽管不到1%的CPU使用率与流量峰值有关。 (此应用程序完成的工作的99%是(a)在memcache任务队列中,(b)在客户端JavaScript / JSON逻辑中。

我想知道的是,所有新增的实例是否都需要自己的Memcache任务队列,这也许就是为什么我看到与那些日期重新填充内存缓存的任务队列相关的CPU使用率要高得多 - < strong>该任务实际上是针对每个实例单独执行的?

如果是这样,我如何确保任务队列 - 以及它填充的Memcache - 在实例之间共享 - 如果可能的话?

1 个答案:

答案 0 :(得分:1)

任务队列和内存缓存都是全局的。您可能会以某种方式将任务排入队列,这取决于实例的数量,因此您开始执行的任务超出了应有的范围 - 如果没有看到您的代码,就无法说出来。