Google App Engine的速度有多快?

Man*_*oor 5 java google-app-engine

我在过去2个月里一直在试验GAE.

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

我的测试文件大小为300 KB.

这是我发现的

本地系统

  • 上传时间不到1秒
  • 处理2500记录在3秒内

在Google Sandbox上

  • 上传需要5-7秒.

  • 处理文件给出超时.

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

我的问题是

  1. 为什么需要太多时间?
  2. 有没有办法减少这个时间?
  3. Google将此处理计入CPU使用量.他们没有透露h/w他们在内部使用什么CPU?我的意思是我获得的CPU是否等于或高于PIII?

编辑@Drew Sears的回答.

我目前在做什么

  1. 将文件上传到GAE
  2. 获取上传的数据字节.通过流,计数行,将其保存为bigtable.
  3. 有一个独特的字段,id,我的记录.
  4. 现在,我创建队列

int x = linesCount/50;

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))
    );                      
}
Run Code Online (Sandbox Code Playgroud)

任务处理servlet从存储中读取文件并使用totRec和startIdx处理该文件并关闭它.

Dre*_*ars 4

这确实不是测试 App Engine 可扩展性的好方法。

  1. 如果您需要 7 秒才能发布 300KB,那么瓶颈几乎肯定是您的上行带宽,而不是 Google 的下行带宽或与 App Engine 相关的任何内容。我通常会获得更快的上传速度。
  2. 如果您希望请求更快地完成,请尽量减少 RPC 调用。每个数据存储区获取、放置或查询都是到外部服务器的往返。如果您要循环数百行并在每次循环迭代中执行 put 操作,则会产生大量不必要的开销。使用一个数据存储库保存所有实体,您将获得更快的结果。Guido 的AppStats 框架是寻找 RPC 优化机会的绝佳工具。