_ah / stats中的RPC时序是否会遗漏?

时间:2015-04-04 00:07:24

标签: google-app-engine google-cloud-datastore app-engine-ndb

我试图了解我可以在AppEngine中减少一些特定请求的时间(数百万用户将会制作)。

以下是来自appengine.com实例(不是我的本地开发服务器)的RPC时序。

Gannt图表显示处理程序中的3个RPC调用每个最多花费25毫秒:

_ah/stats Gannt chart

但两者之间存在巨大差距。

所以我在每个RPC周围添加了一些日志消息,例如:

logging.debug('Starting 1st RPC')
tags = ndb.get_multi(tag_keys, use_cache=True, use_memcache=True)
logging.info('Finished 1st RPC, retrieved {} entities'.format(len(tags)))

上面的请求的日志是:

2015-04-03 16:33:16.870 /api/v2/foo 200 1229ms 103kb Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 module=default version=3
D 2015-04-03 16:33:15.650 Starting 1st RPC
I 2015-04-03 16:33:15.670 Finished 1st RPC, retrieved 3 entities
D 2015-04-03 16:33:15.671 Starting 2nd RPC
I 2015-04-03 16:33:15.953 Finished 2nd RPC, retrieved 30 entities
I 2015-04-03 16:33:15.957 ...
D 2015-04-03 16:33:15.958 Starting 3rd PRC
I 2015-04-03 16:33:16.574 Finished 3rd RPC, retrieved 190 entities
I 2015-04-03 16:33:16.652 ...
I 2015-04-03 16:33:16.761 ...
I 2015-04-03 16:33:16.843 Saved; key: __appstats__:095600, part: 90 bytes, full: 15711 bytes, overhead: 0.001 + 0.066; link: http://foo.appspot.com/_ah/stats/details?time=1

显示RPC时序为20 ms,282 ms,616 ms。

我的猜测是图表时序不考虑反序列化到模型对象中,或类似的东西?

根据Datastore Admin,平均值。从第二次和第三次调用返回的实体的实体大小分别为5KB和1KB。

此外,该图表显示第一个RPC在第一个RPC开始后约600毫秒,而日志显示在1和1之间仅经过约300毫秒。 3。

我不应该依赖图表/统计数据来获得硬/实数吗?

1 个答案:

答案 0 :(得分:2)

  

我的猜测是图表时序不考虑反序列化   进入模型对象,或类似的东西?

是的 - 他们只对正确严格

  

此外,该图表显示第一个RPC开始后约600毫秒,   而日志显示在1和1之间仅经过约300毫秒。 3。

令人困惑 - 我有时会看到相反的情况(并且精神上将其归因于应用程序或线程被抢占而且图表仅考虑" CPU&#34 ;而不是'#34;总逝去时间',但从来没有你观察到的那种差异。

  

我不应该依赖图表/统计数据来获得硬/实数吗?

我最近开始使用Google Cloud Monitoring(来自Stackdriver),按照https://cloud.google.com/monitoring/get-started#monitoring_app_engine_projects开始播放("播放"仅限测试阶段),我想知道如果它可以为你做得更好......