Google appengine,运行 繁重的数据存储写入 cron 作业的成本最低的方法?
Google appengine, least expensive way to run heavy datastore write cron job?
我有一个用 Go 编写的 Google appengine 应用程序,它有一个 cron 进程,每天凌晨 3 点运行运行一次。这个过程会查看当天我的数据发生的所有变化,并存储一些关于发生的事情的元数据。我的用户可以 运行 报告此元数据以查看几个月内发生的趋势。该进程每晚执行大约 10-20 百万次数据存储写入。一切正常,但自从我开始 运行 之后,我注意到我的每月账单从 Google 显着增加(从每月 50 美元左右增加到每月 400 美元左右)。
我刚刚设置了这个 运行 所在的一个非常基本的任务队列,我根本没有更改默认设置。有没有更好的方法可以让我在晚上 运行 完成这个过程,从而节省我的钱?我从来没有弄乱过后端(现在已经折旧)或模块 api,而且我知道他们最近更改了很多这些东西,所以我不确定从哪里开始寻找。任何建议将不胜感激。
凌晨 3 点查看您的实例。可能是 GAE 派出了很多人来处理这项工作。您可以配置您的工作以使其 运行 减少并行,这样它会花费更长的时间,但也许它只需要 1 个实例。
但是,如果您的数据库写入确实是最大的因素,那么这不会产生很大的影响。
您可以尝试查看您的数据模型和索引。请记住,每个索引字段都需要额外写入 2 次,因此如果不需要,请查看是否可以从某些字段中删除索引。
您可以做的一项改进是批量写入操作,您可以为此使用内存缓存(支付专用内存缓存,因为它更可靠)。将更新写入内存缓存,一旦大约 900K,将其刷新到数据存储区。这将大大减少写入数据存储的次数,尤其是在元数据较小的情况下。
我有一个用 Go 编写的 Google appengine 应用程序,它有一个 cron 进程,每天凌晨 3 点运行运行一次。这个过程会查看当天我的数据发生的所有变化,并存储一些关于发生的事情的元数据。我的用户可以 运行 报告此元数据以查看几个月内发生的趋势。该进程每晚执行大约 10-20 百万次数据存储写入。一切正常,但自从我开始 运行 之后,我注意到我的每月账单从 Google 显着增加(从每月 50 美元左右增加到每月 400 美元左右)。
我刚刚设置了这个 运行 所在的一个非常基本的任务队列,我根本没有更改默认设置。有没有更好的方法可以让我在晚上 运行 完成这个过程,从而节省我的钱?我从来没有弄乱过后端(现在已经折旧)或模块 api,而且我知道他们最近更改了很多这些东西,所以我不确定从哪里开始寻找。任何建议将不胜感激。
凌晨 3 点查看您的实例。可能是 GAE 派出了很多人来处理这项工作。您可以配置您的工作以使其 运行 减少并行,这样它会花费更长的时间,但也许它只需要 1 个实例。 但是,如果您的数据库写入确实是最大的因素,那么这不会产生很大的影响。
您可以尝试查看您的数据模型和索引。请记住,每个索引字段都需要额外写入 2 次,因此如果不需要,请查看是否可以从某些字段中删除索引。
您可以做的一项改进是批量写入操作,您可以为此使用内存缓存(支付专用内存缓存,因为它更可靠)。将更新写入内存缓存,一旦大约 900K,将其刷新到数据存储区。这将大大减少写入数据存储的次数,尤其是在元数据较小的情况下。