Java Google App Engine任务队列冻结/停止

时间:2014-11-19 22:28:25

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

我一直在使用任务队列模拟我的应用中的使用情况。有时,任务队列将停止,队列中的某些任务将被卡住。冻结任务的ETA最长可达几分钟。

以下是注册50个用户的示例任务队列的日志。请注意,执行11个任务后,暂停2分钟,直到执行最后39个任务。任何任务都没有错误或重试。

 I 2014-11-19 17:16:08.436 200 0 B 2301ms /registerWorker
 I 2014-11-19 17:16:08.727 200 0 B 2661ms /registerWorker
 I 2014-11-19 17:16:08.728 200 0 B 2800ms /registerWorker
 I 2014-11-19 17:16:08.729 200 0 B 2663ms /registerWorker
 I 2014-11-19 17:16:08.730 200 0 B 2667ms /registerWorker
 I 2014-11-19 17:16:08.731 200 0 B 2662ms /registerWorker
 I 2014-11-19 17:16:08.731 200 0 B 2666ms /registerWorker
 I 2014-11-19 17:16:08.883 200 0 B 2748ms /registerWorker
 I 2014-11-19 17:16:08.940 200 0 B 2875ms /registerWorker
 I 2014-11-19 17:16:08.941 200 0 B 3014ms /registerWorker
 I 2014-11-19 17:16:09.070 200 0 B 630ms /registerWorker
 I 2014-11-19 17:18:09.132 200 0 B 1116ms /registerWorker
 I 2014-11-19 17:18:09.134 200 0 B 1116ms /registerWorker
 I 2014-11-19 17:18:09.224 200 0 B 1208ms /registerWorker
 I 2014-11-19 17:18:09.227 200 0 B 1210ms /registerWorker
 I 2014-11-19 17:18:09.228 200 0 B 1212ms /registerWorker
 I 2014-11-19 17:18:09.229 200 0 B 1213ms /registerWorker
 I 2014-11-19 17:18:09.231 200 0 B 1213ms /registerWorker
 I 2014-11-19 17:18:09.231 200 0 B 1215ms /registerWorker
 I 2014-11-19 17:18:09.232 200 0 B 1215ms /registerWorker
 I 2014-11-19 17:18:09.233 200 0 B 1216ms /registerWorker
 I 2014-11-19 17:18:12.128 200 0 B 952ms /registerWorker
 I 2014-11-19 17:18:12.135 200 0 B 961ms /registerWorker
 I 2014-11-19 17:18:12.232 200 0 B 1053ms /registerWorker
 I 2014-11-19 17:18:12.233 200 0 B 1057ms /registerWorker
 I 2014-11-19 17:18:12.325 200 0 B 1149ms /registerWorker
 I 2014-11-19 17:18:12.326 200 0 B 1151ms /registerWorker
 I 2014-11-19 17:18:12.327 200 0 B 1152ms /registerWorker
 I 2014-11-19 17:18:12.328 200 0 B 1150ms /registerWorker
 I 2014-11-19 17:18:12.328 200 0 B 1151ms /registerWorker
 I 2014-11-19 17:18:12.329 200 0 B 1154ms /registerWorker
 I 2014-11-19 17:18:13.735 200 0 B 1032ms /registerWorker
 I 2014-11-19 17:18:13.736 200 0 B 1034ms /registerWorker
 I 2014-11-19 17:18:13.737 200 0 B 1035ms /registerWorker
 I 2014-11-19 17:18:13.737 200 0 B 1035ms /registerWorker
 I 2014-11-19 17:18:13.827 200 0 B 1124ms /registerWorker
 I 2014-11-19 17:18:13.828 200 0 B 1126ms /registerWorker
 I 2014-11-19 17:18:13.830 200 0 B 1127ms /registerWorker
 I 2014-11-19 17:18:13.831 200 0 B 1128ms /registerWorker
 I 2014-11-19 17:18:13.834 200 0 B 1131ms /registerWorker
 I 2014-11-19 17:18:14.052 200 0 B 1350ms /registerWorker
 I 2014-11-19 17:18:14.331 200 0 B 544ms /registerWorker
 I 2014-11-19 17:18:14.333 200 0 B 544ms /registerWorker
 I 2014-11-19 17:18:14.334 200 0 B 546ms /registerWorker
 I 2014-11-19 17:18:14.925 200 0 B 731ms /registerWorker
 I 2014-11-19 17:18:14.928 200 0 B 733ms /registerWorker
 I 2014-11-19 17:18:14.929 200 0 B 735ms /registerWorker
 I 2014-11-19 17:18:14.930 200 0 B 736ms /registerWorker
 I 2014-11-19 17:18:14.931 200 0 B 736ms /registerWorker
 I 2014-11-19 17:18:14.937 200 0 B 743ms /registerWorker

我在queue.xml中定义的此任务设置为:

  <queue>
    <name>register-user</name>
    <rate>25/s</rate>
    <bucket-size>100</bucket-size>
    <max-concurrent-requests>10</max-concurrent-requests>
    <retry-parameters>
      <task-retry-limit>3</task-retry-limit>
      <task-age-limit>1m</task-age-limit>
    </retry-parameters>
  </queue>

有时,所有任务的执行速度都与预期的一样快,有时则不会。这是一个应用引擎错误吗?

1 个答案:

答案 0 :(得分:0)

您的任务需要1到2.5秒才能执行。您将并发限制设置为10,执行速率设置为25 / s。使用上述执行时间显然无法实现这些设置。

请注意App Engine如何快速接受您的前10个任务,在稍微停顿后接受第11个任务,然后意识到没有任务完成并决定等待。然后它在这个长时间的停顿后接受了另外10个任务,再次暂停,接受了9个,暂停了,最后接受了最后的10个。

我在这里看不到任何错误 - 我根据您的设置看到了非常一致的性能。