2012-03-12 82 views
0

我们通过RPC向GWE Java服务器发送一个来自GWT客户端的查询。响应是一个相当复杂的对象树。服务器上的RPC实现从开始到结束需要900毫秒。总HTTP请求需要4-5秒。我们已经检查过实际的传输时间和ping时间可以忽略不计。 (与空resonse的RPC需要300毫秒和实际的发送时间是很小的。)带Google App Engine的GWT RPC(GAE)延迟导致性能问题

我想也许响应的序列化可以花时间,但是当我们调用明确在使用服务器RPC.encodeResponseForSuccess它只需50毫秒。

因此,我们有3-4秒的开销完全不知情,我不知道如何调试。我们甚至试图使用servlet而不是RPC发送序列化的RPC响应,果然,相同的响应花费了1秒而不是5秒!

谢谢!

回答

1

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

-style PRETTY编译你的应用程序,并通过Chrome开发工具探查器,IE开发工具探查器或dynaTrace Ajax(http://ajax.dynatrace.com/ajax/en/)或类似的JavaScript剖析工具来运行它,看看哪里你的时间过去了。

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

+0

我的servlet也必须反序列化相同的响应,但它的工作速度更快。没有明显的原因,有几秒的RPC开销。 – user1176505 2012-04-24 16:14:06