我有一个使用 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 中的多线程系统调用?