微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Google App Engine的速度有多快?

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

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

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

这是我发现的

本地系统

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

在Google SandBox

>上传需要5-7秒.
>处理文件给出超时.
>它只保存60-180条记录.

我的问题是

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

编辑@Drew Sears的回答.

我目前在做什么

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

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))
    );                      
}

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

最佳答案
这实际上不是测试App Engine可扩展性的好方法.

>如果花费7秒钟发布300KB,瓶颈几乎肯定是您的上游带宽,而不是谷歌的下游带宽,或者与App Engine有关.我经常获得更快的上传速度.
>如果您希望更快地完成请求,请最小化RPC调用.每个数据存储区get,put或query都是到外部服务器的往返.如果您循环遍历数百行并在每次循环迭代中执行put,则会产生大量不必要的开销.使用一个数据存储区保存所有实体,您将获得更快的结果. Guido的AppStats framework一个很好的工具,可以找到RPC优化机会.

原文地址:https://www.jb51.cc/java/437690.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐