Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails csv导入ram消耗问题postgres_Ruby On Rails_Postgresql_Csv_Memory Leaks - Fatal编程技术网

Ruby on rails rails csv导入ram消耗问题postgres

Ruby on rails rails csv导入ram消耗问题postgres,ruby-on-rails,postgresql,csv,memory-leaks,Ruby On Rails,Postgresql,Csv,Memory Leaks,我已经在rails应用程序中实现了CSV导入。现在的问题是ram消耗太高。我的CSV中的记录总数约为3600条,我的ram消耗量约为600MB-800MB,在使用导入方法后,它甚至不会被刷新 我可以在roo问题列表中看到类似的问题 我正在工作 轨道4.2.6 Ruby 2.2.4 代码: 最初,我的ram消耗量是: GetProcessMem:0x7fd3083b2a30 @mb=204.52734375 在退出该方法之前: GetProcessMem:0x7fd30ae1a7a0 @mb=2

我已经在rails应用程序中实现了CSV导入。现在的问题是ram消耗太高。我的CSV中的记录总数约为3600条,我的ram消耗量约为600MB-800MB,在使用导入方法后,它甚至不会被刷新

我可以在roo问题列表中看到类似的问题

我正在工作 轨道4.2.6 Ruby 2.2.4

代码:

最初,我的ram消耗量是:

GetProcessMem:0x7fd3083b2a30 @mb=204.52734375
在退出该方法之前:

GetProcessMem:0x7fd30ae1a7a0 @mb=289.60546875
完成并重定向到主页后:

GetProcessMem:0x7fd2fb3913d8 @mb=629.61328125
有这么多的ram消耗,我无法在heroku上部署它。 这个被消耗的ram甚至没有得到清理,必须重新启动我的服务器

任何人都可以使用解决方案或其他方法导入csv。

使用此gem并使用批处理过程。这将把导入分为若干组,并降低操作所需的ram量

例如,按500排分组


我认为你只是做错了尝试这个链接查看所有方法的比较。特别是最后两个。
GetProcessMem:0x7fd2fb3913d8 @mb=629.61328125
    SmarterCSV.process(file, {chunk_size: 500 }) do |array|
      array.each do |sub_array|
        if User.find_by_order_id(sub_array[:order_id]).present?
          User.update_attribute :shipping_id, sub_array[:order_id]
        end
      end
    end