我有一个大约需要五分钟才能完成的过程。它在后端实例中每两小时运行一次 cron 作业。
最近进程开始失败;不是每次,而是一天几次。发生的第一件事是内存缓存开始抛出异常:
04:21:13.640 com.google.appengine.api.memcache.LogAndContinueErrorHandler handleServiceError: Service error in memcache
com.google.appengine.api.memcache.MemcacheServiceException: Memcache get: exception getting 1 key (ItemFollowableCompleted:RegionUS:P8XD:0)
at com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.handleApiProxyException(MemcacheServiceApiHelper.java:68)
at com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.absorbParentException(MemcacheServiceApiHelper.java:109)
这些都不是致命异常,但几秒钟后进程终止,没有警告或关闭消息。日志显示
04:21:30.591 Process moved to a different machine.
和错误 500。
这是与内存缓存相关的谷歌基础架构问题,还是应用代码中的某些内容可能导致该问题?
最佳答案
不,这不是 Google 基础架构中的错误。您的流程预计会在需要时在实例之间移动(维护、您这边的更多需求……),您无能为力。
尽管如此,您可以采取一些措施来减轻这可能对您的应用产生的任何影响。
查看 [1] 中有关如何在实例关闭时跟踪待处理作业的一些建议,并查看后台线程。
我猜你正在使用 Python,如果不是,请寻找你对应的语言。
[1] https://developers.google.com/appengine/docs/python/backends/#Python_Backend_states
关于google-app-engine - 后端 "Process moved to a different machine"并因错误 500 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855488/