我在Heroku应用程序中使用Resque作为后台作业,我想知道是否有办法让一个给定作业更快地处理。例如,有一些作业需要占用大文件(20GB +),读取它的内容并将其分成数据库条目(数百万条目)。在Heroku中快速处理Resque作业?
这发生在一个单一的工作。
由于只有一名工人用于工作,因此投掷更多工人无法工作。那么有没有办法让一个给定的员工更快地工作?
我在Heroku应用程序中使用Resque作为后台作业,我想知道是否有办法让一个给定作业更快地处理。例如,有一些作业需要占用大文件(20GB +),读取它的内容并将其分成数据库条目(数百万条目)。在Heroku中快速处理Resque作业?
这发生在一个单一的工作。
由于只有一名工人用于工作,因此投掷更多工人无法工作。那么有没有办法让一个给定的员工更快地工作?
一种选择是使用新的2x dynos,它为你的工作者提供了双CPU和双存储器。
没有看到任何代码很难说,但也许有机会优化它创建的UPDATE或INSERT?
如果它像
csv_file.each_line do |line|
Record.create ...
end
循环您可以通过分批改进它的这种性能,使其读,说,从文件中1000行,然后做的1000行到数据库的INSERT 。
此SO answer显示了如何使用创建批量插入。