【发布时间】:2012-10-11 04:20:43
【问题描述】:
我有一个使用 sidekiq 将一些处理发送到队列的系统。这些过程包括对操纵图像的程序进行系统调用。我对这个程序的表现非常糟糕。当我“顶”我的系统时,几乎所有的 cpu 都被 ruby 消耗了,而图像软件只消耗了一些 CPU。
我尝试使用 5、10、20、30 名工人进行测试。增加更多的工人并不能提高处理性能(高值甚至更糟)。
我的工人是这样的:
def perform(file)
command = "convert -strip -resize 580x580 -quality 90 -sampling-factor 4:2:0 -interlace Plane #{file} #{file}.main"
`#{command}`
end
有什么方法可以改进 Ruby 中的多线程系统调用?
【问题讨论】:
-
是什么让你认为 Resque 是多线程的?
-
@DanielCukier Resque 不是多线程,它在内部使用
fork
标签: ruby multithreading system system-calls sidekiq