我们通过RPC将一个查询从GWT客户机发送到GAE Java服务器。响应是一个相当复杂的对象树。服务器上的RPC实现从开始到结束需要900毫秒。HTTP总请求耗时4-5秒。我们已检查实际传输时间和ping时间可以忽略不计。(空洞共振的RPC需要300ms,实际传输时间很小。)
我认为响应的序列化可能会花费一些时间,但是当我们使用RPC.encodeResponseForSuccess在服务器上显式调用时,它只需要50ms。
所以我们有3-4秒的开销,完全无法解释,我不知道如何调试它。我们甚至尝试使用servlet而不是RPC发送回序列化的RPC响应,果然,同样的响应花费了大约1秒而不是5秒!
谢谢!
发布于 2012-03-13 06:35:59
您忘记了请求数据的客户端序列化时间和响应数据的反序列化时间。
使用-style PRETTY编译你的应用,并通过Chrome Dev Tools Profiler、IE Dev Tools Profiler或javascript Ajax (http://ajax.dynatrace.com/ajax/en/)或类似的javascript分析工具运行它,看看你的时间都花到哪里去了。
非常大的响应需要很长时间才能反序列化。如果您在响应中使用了大量的BigDecimal值,由于仿真代码的复杂性,它将花费更长的时间(这是一个杀手)。
https://stackoverflow.com/questions/9673684
复制相似问题