我最近两个月在尝试使用GAE。
我通过上传CSV文件将记录保存到bigtable中。
我的测试文件大小为300 KB。
以下是我的发现:
本地系统
- 上传时间不到1秒
- 3秒内处理2500条记录
在Google沙盒中
上传需要5-7秒。
处理文件会超时。
只能保存60-180条记录。
我的问题是
- 为什么需要这么长的时间?
- 有没有办法缩短这个时间?
- Google将此处理计入CPU使用。他们不公开硬件信息,那么他们使用的CPU是PIII或更高版本的等效CPU吗?
根据@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处理文件,然后关闭它。