代码之家  ›  专栏  ›  技术社区  ›  Manjoor

googleappengine有多快?

  •  5
  • Manjoor  · 技术社区  · 14 年前

    在过去的两个月里,我一直在尝试GAE。

    我通过上传CSV文件将记录保存到bigtable。

    我的测试文件大小是300KB。

    这是我发现的

    • 3秒内处理2500条记录

    在Google沙盒上

    • 上传需要5-7秒。

    • 它只保存60-180条记录。

    我的问题是

    1. 有没有办法减少这个时间?
    2. Google将这种处理计入CPU使用量。他们没有透露硬件,所以他们内部使用什么CPU?我的意思是,我得到的CPU是否等于或大于PIII?

    编辑用于 的答案。

    1. 获取上传的数据字节。按流,计算行数,将其保存到bigtable中。
    2. 有一个唯一的字段,id,我的记录。
    3. 现在,我创建队列

    for(int i<0;i=x;i++)
    {
            x = i * 50;
            Queue queue = QueueFactory.getQueue("test-queue");
            queue.add(TaskOptions.Builder.url("/TestQueue")
                    .param("id", id.toString())
                    .param("startIdx",String.valueOf(x))
                    .param("totRec",String.valueOf(50))
            );
        }
    
    int y = linesCount % 50;
    if( y > 0 )
    {
        x = (linesCount / 50) * 50;
        Queue queue = QueueFactory.getQueue("test-queue");
        queue.add(TaskOptions.Builder.url("/TestQueue")
                .param("id", id.toString())
                .param("startIdx",String.valueOf(x))
                .param("totRec",String.valueOf(y))
        );                      
    }
    

    任务处理servlet从存储器读取文件,并使用totRec和startIdx处理文件并关闭它。。

    1 回复  |  直到 13 年前
        1
  •  4
  •   Drew Sears    14 年前

    这并不是测试appengine可伸缩性的好方法。

    1. 如果发布300KB需要7秒,那么瓶颈几乎肯定是你的上游带宽,而不是谷歌的下游带宽,或者与appengine有关的任何东西。我经常得到更快的上传速度。
    2. 如果希望请求更快完成,请最小化RPC调用。每个数据存储get、put或查询都是到外部服务器的往返。如果您在数百行上循环,并且在每个循环迭代中执行一次put,那么您将招致大量不必要的开销。使用一个数据存储put保存所有实体,您将获得更快的结果。圭多的 AppStats framework