如何在App Engine生产环境中调试执行中的暂停?

时间:2012-06-04 13:01:01

标签: java google-app-engine appstats

在查看我的Google App Engine / Java应用程序的Appstats图表时,我有时会发现RPC之间的差距似乎无法解释。在附带的屏幕截图中,两次从for循环调用MemcacheService.get之间存在差不多2秒的差距。当我在本地运行代码时,不会出现此问题。当我的代码在App Engine云中运行时,如何调查此异常的原因?

显然我不会让我发布图片,所以这里是图表的链接:http://i.imgur.com/bbCXr.jpg

2 个答案:

答案 0 :(得分:1)

记住App Engine是共享主机。虽然它似乎没有任何接近超卖的共享VPS主机,但你仍然在运行其他网站的机器上。如果其他站点代码接管某些资源,则可能会影响您的应用程序性能。我并不完全了解App Engine对哪些资源也很敏感,像@ Nick-Johnson这样的人会更能告诉你那些。 App Engine的工作方式可以防止大多数常见问题。当我看到那张图时,它只是看着我,就像另一个应用程序抓住了机器的差距。

答案 1 :(得分:1)

虽然2秒是一个异常长的时间,但像这样的无法解释的差距通常可以归结为以下两个原因之一:应用程序代码或计划。

由于听起来你不太可能在这两个电话之间进行2秒钟的处理工作,最可能的答案是安排:你的应用程序耗尽了时间片,操作系统安排其他任务运行一段时间。