Java 任务队列任务遭遇”;进程终止,因为后端关闭时间太长”;太频繁

Java 任务队列任务遭遇”;进程终止,因为后端关闭时间太长”;太频繁,java,google-app-engine,Java,Google App Engine,我的工作是处理GAE数据库中的记录并上传到谷歌云。因为这需要很长时间,所以我使用任务队列一次处理一个小批量。但我一直在日志中看到“进程终止是因为后端关闭时间太长”的问题。我知道我只有30秒的清理时间,我已经超过了这个时间限制。虽然我知道该实例有时可能会变得不可用,需要关闭,但这种情况经常发生,每次执行任务需要3到4分钟(有时是10分钟,这是任务队列的时间限制),并且每个任务没有完成多少工作 我想知道后端关闭的原因可能是什么。这纯粹是服务器端的问题还是代码中的一些bug也可能导致这个问题 谢谢 进

我的工作是处理GAE数据库中的记录并上传到谷歌云。因为这需要很长时间,所以我使用任务队列一次处理一个小批量。但我一直在日志中看到“进程终止是因为后端关闭时间太长”的问题。我知道我只有30秒的清理时间,我已经超过了这个时间限制。虽然我知道该实例有时可能会变得不可用,需要关闭,但这种情况经常发生,每次执行任务需要3到4分钟(有时是10分钟,这是任务队列的时间限制),并且每个任务没有完成多少工作

我想知道后端关闭的原因可能是什么。这纯粹是服务器端的问题还是代码中的一些bug也可能导致这个问题


谢谢

进程终止,因为关闭后端花费的时间太长
错误通常在部署新版本的后端时显示。此外,如果启用了
true
选项,则Google会经常关闭后端实例。它甚至几分钟后,即使他们收取你整整15分钟,所以考虑使用永久而不是动态实例。< /P>
另一个问题可能是实例内存不足。在这种情况下,实例会自行重新启动,从而导致上述错误。您可以尝试使用具有更多内存的实例类型,如B2或B4

正如谷歌在IO中所说,后端将在没有太多警告的情况下关闭。开发人员需要编写代码来处理任务失败的情况。在我的例子中,我注册了一个关机钩子,它每次都能工作(只对任务队列有效)。此外,您还可以使用任务名在恢复期间从失败的任务中筛选已完成的任务。GAE独立退休。因此,不必担心为什么后端首先会失败。只要我们在任务队列中使用recovey代码,它就会在某个时刻执行

正如您所提到的,这可能是应用程序之外的bug或服务器负载问题。在不同的应用程序/代码中追踪这个错误之后,我觉得GAE范式似乎是针对小任务块的urlhandler的代码