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

Java 如何在App Engine生产环境中调试执行暂停?,java,google-app-engine,appstats,Java,Google App Engine,Appstats,当查看我的GoogleAppEngine/Java应用程序的Appstats图表时,我有时会看到RPC之间似乎无法解释的时间间隔。在所附的屏幕截图中,从for循环调用MemcacheService.get的两次调用之间有将近2秒的间隔。在本地运行代码时,不会出现此行为。当我的代码在appenginecloud中运行时,如何调查这种异常的原因 显然,所以我不会发布图片,所以这里有一个指向图表的链接:记住应用程序引擎是共享主机。虽然它似乎并没有接近超卖共享VPS主机,但您仍然在运行其他站点的机器上。

当查看我的GoogleAppEngine/Java应用程序的Appstats图表时,我有时会看到RPC之间似乎无法解释的时间间隔。在所附的屏幕截图中,从for循环调用MemcacheService.get的两次调用之间有将近2秒的间隔。在本地运行代码时,不会出现此行为。当我的代码在appenginecloud中运行时,如何调查这种异常的原因


显然,所以我不会发布图片,所以这里有一个指向图表的链接:

记住应用程序引擎是共享主机。虽然它似乎并没有接近超卖共享VPS主机,但您仍然在运行其他站点的机器上。如果其他站点代码接管了某些资源,则可能会影响应用程序的性能。我也不完全清楚什么资源应用程序引擎是敏感的,像@Nick Johnson这样的人更能告诉你这些。应用程序引擎的工作方式确实防止了大多数常见问题。当我看这张图表时,我觉得好像是另一个应用程序抓住了这台机器的缺口。

虽然2秒是异常长的时间,但像这样无法解释的缺口通常归结为两个原因之一:应用程序代码或调度


由于这两次通话之间,您似乎不太可能完成2秒钟的处理工作,因此最有可能的答案是安排:您的应用程序的时间片用完了,操作系统安排了其他任务运行一段时间。

是否检查了垃圾回收?这些可能会导致长时间暂停