2014-12-02 27 views
0

我有一个任务,将需要很长时间,所以我把它分成3部分,并希望启动三个线程,将同时工作(我确保没有任何访问的相同的变量或任何东西,别担心,他们严格处理自己的数据集)。sidekiq多线程如何去

至于我可以告诉sidekiq推出每个工作一个新的线程,所以我在做app/workers三名工人importerimporter2importer3,所有。在我的控制器之一,我有这样的代码:

Importer.perform_async(arrays[0], date) 
Importer2.perform_async(arrays[1], date) 
Importer3.perform_async(arrays[2], date) 
render json: 1 

我的问题是:是,最好的方式来处理呢?

这似乎很奇怪,一个)的请求,控制器会需要很长时间来渲染1并在sidekiq日志,我可以看到Importer JID-639e67d2aa20cce885690dc7 INFO: start以及同为Importer2而不是3,然后再sidekiq只是killed退出

当我重新启动sidekiq,我得到的Importer3 ... start,然后它是唯一一个工作(它更新一个DB值,它是唯一一个changing`

任何想法,为什么?

回答

2

确定你有足够的记忆?也许这可能会有所帮助:Debugging Mystery Sidekiq Shutdowns

+0

同意。你做的是正确的事情,但这听起来像你内存不足。 – 2014-12-02 23:01:07