我正在使用TaskCloud示例的修改版本来尝试读取/写入我自己的数据。
在部署版本上进行测试时,我注意到往返响应时间很慢。
在我的Android设备上,我对appspot.com有100毫秒的ping响应。 我已将AppEngine应用程序更改为无效(Google信息中心显示无关紧要的平均延迟。
问题是HttpClient客户端.execute(post)花费的时间大约是3秒。 (这是已加载实例的时间)
任何建议都将不胜感激。
编辑:我观看了Google I / O的视频,其中显示了CloudTasks Android-AppEngine应用,您可以看到刷新列表(单次调用AppEngine)大约需要3秒同样。这家伙正在说一些我没有完全掌握的性能(调试器在两端运行?)
视频:http://www.youtube.com/watch?v=M7SxNNC429U&feature=related 时间地点:0:46:45
我会继续调查...... 感谢您的帮助。
编辑2 :回到这个问题......
我使用了鲨鱼数据包嗅探器来查明发生了什么。有些时间花在为每个服务器调用协商SSL连接上。使用http(和ACSID)比https(和SACSID)更快。
新的DefaultHttpClient()和新的HttpPost()用于每个服务器调用。
编辑3 :
再次查看嗅探器日志,实际POST之前有近2秒的延迟。
我还发现Android 2.2(所有版本)存在问题,但已通过Android 2.3解决
编辑4 :已经解决了。请参阅下面的答案。
答案 0 :(得分:1)
由于未提供有关您的应用的详细信息,因此很难回答您的问题。无论如何,您可以尝试使用Google提供的appstats tool来分析瓶颈。
答案 1 :(得分:1)
使用Shark嗅探器后,我能够理解确切的问题,并在this question找到答案。
我使用了Liudvikas Bukys的评论并使用建议的行解决了问题:
post.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
答案 2 :(得分:0)
第一次拨打GAE应用程序通常需要比后续通话更长的时间。您应该熟悉加载和预热请求以及GAE如何处理您应用的实例:http://code.google.com/intl/de-DE/appengine/docs/adminconsole/instances.html
你也可以尝试一些事情:
让您的应用为每个实例处理多个请求(确保您的应用是线程安全的!)http://code.google.com/intl/de-DE/appengine/docs/java/config/appconfig.html#Using_Concurrent_Requests
始终启用应用管理员功能(这将花费您)