我正在生成一些随机数据,以便将它们存储在mongodb中。 通过生成大量数据并将它们首先存储在一个数组中(用于将生成与插入测量分开),会发生内存不足错误。
代码:
for (i=0; i<amount; i++)
{
doc = {starttime:get_datetime(), endtime:get_datetime(), tos: null, sourceport: get_port(), sourcehost: get_ip(), duration: get_duration() , destinationhost: get_ip(), destinationport: get_port(), protocol: get_protocol(), flags: get_flags(), packets: get_packets()};
docs[i]=doc;
}
我选择了金额= 10.000.000。
所有功能如下:
function get_flags( )
{
var tmpstring= Math.floor((Math.random()*8)+1);
return tmpstring;
}
如何发生此类错误?我该如何解决这个问题?
答案 0 :(得分:1)
如何发生此类错误? docs数组需要内存,因此添加1000万个条目意味着使用(例如)100x10,000字节(如果每个doc条目为100字节),即1GB内存。
建议的解决方案:也许尝试以1000个条目的批量运行生成插入循环。因此,生成1000个文档,保存它们并将数组重用于下一个1000个文档,依此类推。