Google App Engine上的CPU带宽是否过于昂贵,或者是我的代码?

aki*_*adu 9 java performance google-app-engine

我想对GAE读取性能进行基准测试.从数据存储中提取了大约10,000个实体.这些实体包含3个属性名称(大约16个字符),描述(大约130个字符)和时间戳.没什么异常大的.

这是我看到的:

平均而言,读取10k个实体大约需要11秒. 不确定这是否被认为是快速,缓慢或合理,但不管它是不是太令人兴奋.

更有趣的发现是CPU计量. 执行此读取操作100次消耗大约3.0 CPU小时.费用是0.30美元.

鉴于此处没有CPU密集型算法,它是否会使GAE的CPU带宽相当昂贵​​?(当然,它以Python脚本等形式提供24/7 sys-admins,但仍然......)

或者这是我的Java代码中的东西:

http://github.com/akirekadu/GAE-Evaluation/blob/master/show.jsp

Max*_*Max 5

这不是你的代码,我相信你的结果.在我们自己的实验中,我们发现检索和(特别是)存储在CPU配额方面是非常昂贵的操作.

我们注意到:

  • 索引很昂贵.如果你的写作不仅仅是阅读,那么请对你的索引吝啬.确保您了解indexed=False模型属性的属性,并密切关注自动生成到index.yaml中的内容.

  • 如果你阅读的内容超过了你的写作,那么很多多索引可能都有意义.尽可能使用memcache.如果有意义,请使用实体组.

  • 应用引擎API为您提供可提高效率的工具.它们很重要.如果您要写100行,则使用单个批量put()与100个单独的put()调用将大大减少CPU使用.

如果您的应用程序经常按照您的描述执行大型读取,您可能希望选择不同的解决方案(例如,像Slicehost或Linode这样的VPS)或不同的数据模型.每个应用程序都有不同的需求,WRT磁盘,CPU,内存等,所以我将后面的计算作为练习给读者.

HTH!