为什么调用此方法会导致我的应用程序超过免费配额?

时间:2014-07-14 06:21:37

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

无法理解正在发生的事情。我称之为datastore.Put操作的唯一位置(据我所知,没有索引)在下面的函数中。它被称为每分钟9次(如果出现故障则更少)。

func SaveCurrentStatus(c appengine.Context, check *StatusCheck, ok bool, latency time.Duration, message string) {
    r := Result{
        Id:      check.Id,
        Name:    check.Name,
        Ok:      ok,
        Latency: latency,
        Message: message,
    }
    uid := datastore.NewKey(c, "Status", "", check.Id, nil)
    _, err := datastore.Put(c, uid, &r)
    if err != nil {
        c.Errorf("%s", err.Error())
        return
    }

    MemcachePut(c, fmt.Sprintf("Status-%d", check.Id), r)
}

据我了解,这应该导致9 * 60 * 24写操作(它们不是新实体)。这是每天总共19,960次操作,免费配额应该是0.05百万?

是否有任何实用程序可以帮助我分析正在发生的事情或查看某些我不知道的事情的日志?

1 个答案:

答案 0 :(得分:3)

我没有太多使用Go的经验,但我会说你必须明确地将你的属性设置为无索引,否则它们默认为索引。然后,每个实体写入还包括对与实体属性相关联的每个索引(ascendent和descendent)的写入。

您可以找到更多详情here

Google Developers Console中,您可以检查给定实体的哪些属性使用索引。

转到存储/云数据存储区/仪表板,并作为您选择的种类选择实体。它显示所有属性及其索引大小。