诊断appengine java后端在已部署的应用程序中挂起

时间:2012-01-21 00:45:23

标签: java google-app-engine

我们正在使用后端来为我们的大批量工作并行化 用户。这涉及将100个任务添加到专用队列中 将任务分散到5个动态后端。其中许多任务都有 url获取外部Web服务。

当我们为一个用户运行它时,它似乎工作正常,但我们一下子 为许多用户运行它(例如在夜间批量运行中)我们看到了大部分用户 后端最终停止处理新任务。

我们已经尝试过限速,但这也没有帮助。我可以手动停止 被冻结的后端和新的后端将启动并启动 处理,直到他们太冻结。最终一切都在完成之后完成 几次停止冻结服务器的迭代。

显然这严重限制了我们的扩展能力,所以我 想知道如何诊断这个问题。我们无法重现这一点 localhost因为它不是真正的多线程而且不是真正的 复制部署的数据模式。

我们可以通过使用拉队列来解决这个问题,但更多 要编写的代码,我宁愿让队列/后端调度程序执行此操作 为我们工作。

我想做的是将探查器或jconsole连接到后端 - 这样做 马上告诉我冻结的来源。那是偶数 可能?如果没有,是否有人可以使用任何其他技巧 诊断冷冻后端?

fyi:“冻结”实例的内存水平从150mb不等 到250mb,即它可能是内存泄漏,但内存数量并不真正支持,它们在冻结时消耗零CPU并且不处理任何新任务。

感谢您的关注和帮助,Steve

1 个答案:

答案 0 :(得分:2)

过去我使用过Java VisualVM。您可以将它附加到远程运行的JVM并使用它来获取内存转储并检查CPU /线程使用情况等。这对于找出这样的东西非常方便。