2011-06-07 130 views
1

我正在使用TaskCloud示例的修改版本来尝试读取/写入我自己的数据。AppEngine响应时间很慢

在部署版本上测试时,我注意到往返响应时间很慢。

从我的Android设备上,我对appspot.com有100ms的ping响应。 我已经改变了的AppEngine应用程序什么也不做(谷歌仪表板显示了微不足道的平均延迟时间。

的问题是,它需要对HttpClient的客户端.execute(岗位)的时间大约为3秒。 (这是时间当一个实例已经被加载)

任何建议,将不胜感激

编辑:我看过谷歌我的视频/ O显示CloudTasks Android系统的Ap​​pEngine应用程序,你可以看到,刷新列表(一次调用AppEngine)大约需要3秒钟,这个人是说一些关于性能,我并没有完全得到(调试器两端都运行?)

视频:http://www.youtube.com/watch?v=M7SxNNC429U&feature=related 时间地点:零时46分45秒

我会继续调查... 感谢您一直以来的帮助。

编辑2:回到这个问题...

我用鲨鱼数据包嗅探器来找出发生了什么。有些时间花在协商每个服务器调用的SSL连接上。使用http(和ACSID)比https(和SACSID)快。

新的DefaultHttpClient()和新的HttpPost()用于每个服务器调用。

编辑3

在嗅探器日志中寻找再次,有实际的POST之前的近2秒延时。

我还发现,该问题与Android 2.2(所有版本)存在,但与Android 2.3

EDIT 4解决:它已经解决了。请参阅下面的答案。

+0

你说你的Android应用的时钟时间为3秒。它在App Engine上的管理控制台日志中显示的内容是什么?两者之间的任何差异都取决于设备和应用程序之间的往返时间,以及通过网络下载响应的时间。请记住,HTTP事务涉及多次往返,并且前端不提供应用程序 - 应用程序在其他地方。 – 2011-06-08 01:11:30

+0

谢谢尼克。我从应用程序中删除了所有功能,因此AppEngine管理控制台日志显示的平均时间少于100毫秒。我位于美国境外,但3秒太多了。 (相比之下,在Google Documents Excel工作表中以编程方式编写一行需要900毫秒)Nick,您的挂钟时间对AppEngine访问权限有什么影响? TIA – OferR 2011-06-08 04:00:59

+0

在这种情况下,几乎所有的延迟都会降低到应用的实际roundotrip时间,以及蜂窝网络中的延迟,而不是App Engine本身(或您的应用)的延迟。 – 2011-06-08 05:43:53

回答

1

使用鲨鱼嗅探器后,我能够理解确切的问题,并且我在this question中找到了答案。

我用Liudvikas Bukys的评论和使用建议的路线解决了这个问题:

post.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false); 
0

通常情况下,第一次打到您的GAE应用的通话时间将比后续通话时间要长。你应该让自己熟悉装载和热身的请求和GAE如何处理您的应用程序的实例:http://code.google.com/intl/de-DE/appengine/docs/adminconsole/instances.html

有的东西你也可以尝试:

+0

谢谢斯蒂芬。正如我所说,3秒是实例已经加载的时间(随后的调用)。您是否遇到3秒响应时间用于后续通话? – OferR 2011-06-07 11:45:22

1

这是困难的,因为没有提供有关您应用的详细回答你的问题。无论如何,您可以尝试使用Google提供的appstats tool来分析瓶颈。

+0

谢谢帅。我会看看这些工具。我也想知道3秒响应时间是否是AppEngine的标准。你得到什么类型的响应时间?我的意思是客户端的响应时间(Google显示仪表板上的平均延迟<100ms) – OferR 2011-06-07 15:18:58

+0

@OferR那么它确实取决于您的任务。你能否提供关于你的应用逻辑的更多细节?仪表板上的延迟是新请求的响应时间,即开始执行(post)之前等待的时间,而不是执行(post)所耗费的时间。您可以考虑在GAE上自动进行多线程应用,因为当有新的请求进入时,只要有足够的资源存在,它就会被处理。 – ShuaiYuan 2011-06-07 17:52:49

+0

作为试图找出它的一部分,我已经剥离了所有的应用程序逻辑。它什么也没做。请求由SDK的com.google.web.bindery.requestfactory.server.RequestFactoryServlet提供,后者调用我的应用程序。顺便说一句,我测试了未经修改的Google I/O示例CloudTasks,并且从我的Android设备或PC浏览器获得了相同的3秒响应时间。 (http://cloudtasksio.appspot.com/)。我的问题是在这个时候:有没有人从AppEngine应用程序获得超过3秒钟的客户端响应时间? – OferR 2011-06-07 18:20:45