我正在将我的应用程序迁移到 HRD,现在大约需要 3 天。我也尝试过暂停和恢复。它仍处于“复制”阶段。我可以看到 Datastore 读取操作的变化在增加并计费。
我还在 http://code.google.com/p/googleappengine/issues/entry?template=Production%20issue提交了一个问题
我还没有收到这个问题的回复。我应该等多久?
-阿斯瓦特
我正在将我的应用程序迁移到 HRD,现在大约需要 3 天。我也尝试过暂停和恢复。它仍处于“复制”阶段。我可以看到 Datastore 读取操作的变化在增加并计费。
我还在 http://code.google.com/p/googleappengine/issues/entry?template=Production%20issue提交了一个问题
我还没有收到这个问题的回复。我应该等多久?
-阿斯瓦特
迁移我的应用程序时,我遇到了类似的问题。最后事实证明我有几个实体使用的索引数量超过了允许的数量(我认为是 5000)。直到 2011 年 11 月,App Engine 才强制执行5000 个索引条目/实体限制。已修复此问题,并且超出限制的所有现有实体键都被继承为旧行为。迁移到 HRD 将更改您的密钥,因此如果您超出限制,您将不得不减少实体数量。
我通过删除可能的索引来修复我的迁移,因为 App Engine 开始使用zig zag 合并来合并两个单独查询的结果。例如索引:
- kind: Product
properties:
- name: name
- name: tags
- name: tags
- name: tags
可以改为:
- kind: Product
properties:
- name: name
- name: tags
建议我修复迁移的其他解决方案是:
不平衡的命名空间。如果您使用 5000 个命名空间,但 99% 的实体位于 1 个命名空间中,则工具按命名空间分片,并且大多数实体将由单个工作实例提供服务。如果您将新实体写入此命名空间的速度比单个工作人员将它们复制到新应用程序的速度快,那么您的迁移将永远运行
比迁移工具映射键更快地编写实体。这是一个典型的例子,如果你每秒处理成百上千的查询(我们称之为 QPS)并且新实体正在以这种速度写入,则映射器无法跟上。映射器负责将实体分片到桶中,以便可以并行复制它们