Ruby 为实现最佳性能,最佳重新调整工作人员数量

Ruby 为实现最佳性能,最佳重新调整工作人员数量,ruby,mongodb,parallel-processing,resque,Ruby,Mongodb,Parallel Processing,Resque,我使用Resque是为了在我的学术研究中实现廉价的并行性——我将巨大的任务分成相对较小的独立部分,然后提交给Resque。这些任务要做一些繁重的工作,广泛使用数据库(如果重要的话是MongoDB)和CPU 所有这些工作都非常缓慢——在我的数据集中,创造了1000个工作岗位,而两名工人14小时的持续工作只够完成约800个工作岗位。正如你可能已经怀疑的那样,这种速度令人沮丧 我有一个四核处理器(CoreI5什么的,不是高端的),除了Mongo实例和resque workers之外,在相当长的一段时间

我使用Resque是为了在我的学术研究中实现廉价的并行性——我将巨大的任务分成相对较小的独立部分,然后提交给Resque。这些任务要做一些繁重的工作,广泛使用数据库(如果重要的话是MongoDB)和CPU

所有这些工作都非常缓慢——在我的数据集中,创造了1000个工作岗位,而两名工人14小时的持续工作只够完成约800个工作岗位。正如你可能已经怀疑的那样,这种速度令人沮丧

我有一个四核处理器(CoreI5什么的,不是高端的),除了Mongo实例和resque workers之外,在相当长的一段时间内,CPU上没有任何安排


既然您了解了我的故事,我想问的是-如何最大限度地利用此设置?我相信3个工人+1个mongo实例将很快填满所有核心,但同时mongo不必一直工作。

从一个工人开始,不断添加工人,直到性能开始下降。在这里,你有你的最大限度。好吧,那当然是一条路,确实是一条艰难的路。没有其他的吗?花了几天的时间去发现其他有经验的resquer已经知道的东西(可能)在某种程度上并不吸引我:)好吧,你期望什么?也许你的工作太繁重了,你需要把mongo转移到一台专用机器上。那会有点帮助。还有,你的工作是CPU密集型的吗?你有几个无限循环吗?:)如果我有机会将任何东西移动到专用机器上——我将是世上最幸福的人:)好吧,这种性质的东西就在那里:10000个集合的数组。组合(2){p1,p2{JaccardCoefficient(p1,p2)},大集合,昂贵的交集和并集。你怎么知道核心正在填满。您使用什么工具来查看这些内容?