问题标签 [appstats]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
100 浏览

google-app-engine - GAE 中的 get_by_key_name() 耗时长达 750 毫秒。这是预期的吗?

我的程序在一个循环中获取约 100 个条目。使用 get_by_key_name() 获取所有条目。Appstats 显示一些 get_by_key_name() 请求花费了 750 毫秒!(其他较大的值为 355ms、260ms、230ms)。其他提取的平均值从 30 毫秒到 100 毫秒不等。这些时间是实时的,因此有助于“ms”而不是“cpu_ms”。

由于上述原因,返回网页所需的总时间非常高 ms=5754,其中 cpu_ms=1472。(对于背靠背的请求,上述时间反复出现。)

环境: Python 2.7,webapp2,jinja2,高复制,没有其他并发请求到服务器,前端实例类是 F1,还没有设置内存缓存,最大空闲实例是自动的,最小挂起延迟是自动的,使用 db(不是 NDB)。

任何帮助都将不胜感激,因为我将整个数据库设计基于仅使用 get_by_key_name() 从数据存储中获取条目!

更新: 我尝试在每次 get_by_key_name() 方法调用之前和之后立即使用 time.clock()进行分析。我每次调用从 time.clock() 得到的差异是 10 毫秒!(只是想澄清一下 get_by_key_name() 是在不同的种类上调用的)。

根据 time.clock(),总执行时间(以挂钟时间计)为 660 毫秒。但实时为 5754 (=ms),每个 GAE 日志的 cpu_ms 为 1472。

问题总结:

  1. *[更新:已通过传递键列表解决此问题] 为什么 get_by_key_name() 需要这么长时间?*

  2. 为什么 5754 的 ms 比 1472 的 cpu_ms 多得多。由于实时(挂钟)花费的时间太长,任务执行是否在 75%(1-1472/5754)的时间内处于暂停/等待状态就最终用户而言?

  3. 如果上述情况属实,那么为什么 time.clock() 显示从第一个 get_by_key_name() 请求开始到最后一个(〜第 100 个)get_by_key_name() 请求之间只经过了 660 毫秒(挂钟时间);虽然 GAE 这次显示为 5754ms?

0 投票
0 回答
69 浏览

python - Appstats 中的负成本值是什么意思?

对于我在 Google App Engine 开发服务器上的一些请求,Appstats 显示为负值。例如,

负成本是否与正成本相同,但对于删除操作?

0 投票
2 回答
48 浏览

java - 如何限制 GAE 电子邮件以保持在电子邮件配额之下

我正在开发一个 GAEJ 应用程序,该应用程序将在活动的基础上和定期通过电子邮件发送出去。
我目前的问题是我很难想出最好的方法来跟踪我在每个配额中的位置。我曾希望尝试在我的代码中访问 appstats 以检查最后一分钟和当天的 mail.send 调用总数,但该代码的文档相当缺乏。

任何建议将不胜感激,干杯。

0 投票
1 回答
267 浏览

python - GAE Appstats RPC 时间线图显示复杂 NDB 查询的长时间延迟

我在下面的生产应用搜索页面中附加了 Appstats。该页面需要大约 45 秒才能通过 AJAX 加载结果。大约有 100 个实体。查询如下图:

我无法弄清楚:
为什么下图中显示的 RPC 调用之间有空格.. 它们意味着什么.. 我如何防止它们,因为它们使我的网站无法使用
为什么查询需要这么长时间才能完成

应用统计时间表

调用跟踪指向我的代码中的以下行:

呼叫跟踪行显示它:

0 投票
1 回答
165 浏览

google-app-engine - 为什么 App Engine Datastore 小操作 DATASTORE_SMALL 仍然按照 appstats 计费?

在我的 appstats_ah/stats中,其中一行说:

根据定价页面,我认为它们是免费的。

这是 的结果EntityClass.query().filter(some filter).filter(some filter).fetch(keys_only=True)

我弄错了吗?

0 投票
1 回答
337 浏览

google-app-engine - AppEngine Cloud Trace 是否需要 AppStats?

谷歌的 AppEngine 已经升级了他们的开发者控制台,它包括一个名为Cloud Trace的监控工具。这是AppStats分析工具的改进版本吗?如果是这样,我可以删除以前需要的配置文件,比如appengine_config.py和控制台路径app.yaml吗?

0 投票
0 回答
52 浏览

windows-phone - Windows Phone 仪表板显示没有下载

我最近(仅两天前)在 Windows Phone Store 中发布了一个应用程序,并希望跟踪下载次数。当我进入 Windows Phone 仪表板时,我可以看到评论,但在快速统计中它显示“过去 30 天内没有任何应用程序下载。”。我还可以在我正在使用的 API 的仪表板中看到登录信息,因此必须进行一些下载。是否需要一些时间(如果需要多长时间)才能在报告中看到下载,或者仪表板中是否存在某种故障(我怀疑)?

感谢您的回复。

0 投票
0 回答
82 浏览

android - 有关旧 Android 应用程序的统计信息

我有一个包含 10,000 个 Android 移动应用程序的数据集(只有应用程序的名称),我想获取有关每个应用程序的统计信息(开发者/公司名称、下载量、价格、发布日期、评级以及任何可用的公共增长/下降统计数据等)。我尝试查看 Google Play 网站,但问题是这些应用程序很旧(在 2011-2012 年使用)并且在印度(不是我所在的美国)使用。所以,我在 Google Play 上找不到很多(https://play.google.com/store?hl=en

有没有办法(例如用于 Android 市场 [Google Play] 存档的 api)来获取此类信息?

这是我到目前为止所尝试的:

1-创建了一个gmail帐户并将位置设置为印度,但我仍然得到美国Google Play市场的主页。

2-查看了许多网站,如 appbrain.com、androlib.com 和其他一些网站,但有时他们根本没有这些应用程序,或者只是说“这个应用程序在 Google Play 中不再可用”

3-我知道应用程序名称不是唯一标识符,我需要获取包名称,但现在名称就足够了。我想要任何具有此名称的应用程序。

我也有非安卓应用程序,黑莓或塞班(诺基亚)市场有类似的方法吗?但安卓是最重要的。如果您可以帮助我处理任何类型的应用程序,我们将不胜感激。谢谢!

0 投票
0 回答
51 浏览

django - 分析 Django RPC 调用(与 Django 调试工具栏相同)

我有一个使用 jsonrpclib 调用 Django RPC 的应用程序。我需要为这些 RPC 实现某种分析,类似于 Django 调试工具栏,但在这种情况下,没有呈现 html 页面。

我不知道从哪里开始,我正在寻找诸如花费在 RPC 调用上的时间之类的统计数据,不。每个 RPC 触发的查询数。

我检查了谷歌 appstat 并需要类似的东西:https ://cloud.google.com/appengine/docs/python/tools/appstats

如果有人可以建议需要对 django 调试工具栏库本身进行哪些更改以使其配置为 RPC 调用,那就太好了。

或者那里已经存在任何其他库?

0 投票
2 回答
333 浏览

google-app-engine - 了解 Google App Engine 中的 Datastore 获取 RPC

出于性能原因,我在我的 GAE 应用程序中使用了分片计数器 ( https://cloud.google.com/appengine/articles/sharding_counters ),但我在理解它为什么这么慢以及如何加快速度时遇到了一些麻烦.

背景
我有一个 API,它一次抓取一组 20 个对象,对于每个对象,它从计数器中获取总数以包含在响应中。

指标
打开 Appstats 并清除缓存后,我注意到通过 datastore_v3.Get 获取 20 个计数器的总数会产生 120 个 RPC,这需要 2500 毫秒。

想法
这似乎是相当多的 RPC 调用,而且仅读取 20 个计数器就需要相当多的时间。我认为这会更快,也许这就是我错的地方。它应该比这更快吗?

进一步检查
我深入研究了统计数据,查看了 get_count 方法中的这两行:

如果我注释掉 get_multi 行,我会看到 datastore_v3 有 20 个 RPC 调用。Get 总计 185 毫秒。

正如预期的那样,这使得 get_multi 成为 datastore_v3 100 次 RPC 调用的罪魁祸首。获得超过 2500 毫秒的时间。我验证了这一点,但这就是我感到困惑的地方。为什么用 20 个键调用 get_multi 会导致 100 次 RPC 调用?

更新 #1
我在 GAE 控制台中检查了 Traces 并看到了一些附加信息。他们在那里也显示了 RPC 调用的细分 - 但在他们所说的“批量获取以减少远程过程调用的数量”的情况下。不知道如何在使用 get_multi 之外做到这一点。认为那完成了工作。这里有什么建议吗?

更新 #2
以下是一些屏幕截图,显示了我正在查看的统计数据。第一个是我的基线 - 没有任何计数器操作的功能。第二个是在为一个计数器调用 get_count 之后。这显示了 6 个 datastore_v3.Get RPC 的差异。

基线 在此处输入图像描述

在一个计数器上调用 get_count 之后 在此处输入图像描述

更新 #3
根据 Patrick 的请求,我添加了来自控制台跟踪工具的信息屏幕截图。 在此处输入图像描述