【发布时间】:2013-05-07 15:54:26
【问题描述】:
我在 Heroku 应用程序中使用 Resque 来处理后台作业,我想知道是否有一种方法可以更快地处理给定的作业。
例如,有一些工作涉及获取一个大文件 (20GB+)、读取其内容并将其拆分为数据库条目(数百万个条目)。
这发生在一个工作中。
投入更多的工人是行不通的,因为只有一名工人用于这项工作。那么有没有办法让给定的工人工作得更快?
【问题讨论】:
标签: ruby-on-rails heroku resque
我在 Heroku 应用程序中使用 Resque 来处理后台作业,我想知道是否有一种方法可以更快地处理给定的作业。
例如,有一些工作涉及获取一个大文件 (20GB+)、读取其内容并将其拆分为数据库条目(数百万个条目)。
这发生在一个工作中。
投入更多的工人是行不通的,因为只有一名工人用于这项工作。那么有没有办法让给定的工人工作得更快?
【问题讨论】:
标签: ruby-on-rails heroku resque
没有看到任何代码很难说,但也许有机会优化它正在创建的 UPDATE 或 INSERT?
如果它在循环中
csv_file.each_line do |line|
Record.create ...
end
您可以通过批处理它来提高性能,以便它从文件中读取 1,000 行,然后对数据库执行 1,000 行的 INSERT。
这个SO answer 展示了如何使用 create 进行批量插入。
【讨论】:
一种选择是为您的工作人员使用具有双 CPU 和双内存的新 2x dyno。
【讨论】: