使用Google App Engine(GAE)的GWT RPC延迟导致性能问题

时间:2012-03-12 19:41:02

标签: google-app-engine gwt rpc

我们正在通过RPC从GWT客户端向GAE Java服务器发送查询。响应是一个相当复杂的对象树。服务器上的RPC实现从开始到结束需要900毫秒。总HTTP请求需要4-5秒。我们已经检查过实际的传输时间和ping时间可以忽略不计。 (具有无效谐振的RPC需要300ms,实际传输时间很短。)

我想也许响应的序列化可能需要时间,但是当我们使用RPC.encodeResponseForSuccess在服务器上显式调用它时,它只需要50ms。

所以我们有3-4秒的开销完全没有计算,我不知道如何调试它。我们甚至尝试使用servlet而不是RPC来发送序列化的RPC响应,并且确定相同的响应需要~1s而不是5!

谢谢!

1 个答案:

答案 0 :(得分:1)

您忘记了请求数据的客户端序列化时间和响应数据的反序列化时间。

使用-style PRETTY编译您的应用并通过Chrome Dev Tools Profiler,IE Dev Tools Profiler或dynaTrace Ajax(http://ajax.dynatrace.com/ajax/en/)或类似的javascript配置工具运行看看你的时间在哪里。

非常大的响应需要很长时间才能反序列化。如果您在响应中使用了大量BigDecimal值,由于仿真代码非常复杂,它将花费更长的时间(这个是杀手)。