sidekiq을 사용하여 대기열에 일부 처리를 보내는 시스템이 있습니다. 이러한 프로세스는 이미지를 조작하는 프로그램에 대한 시스템 호출을 수행하는 것으로 구성됩니다. 나는이 프로그램에 대해 매우 나쁜 성과를 보이고있다. 내가 '내 시스템'위에있을 때, 거의 모든 CPU가 루비에 의해 소비되고, 이미지 소프트웨어에 의해 단지 몇 개의 CPU가 소비된다.Ruby에서 멀티 스레드 시스템 호출
저는 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
루비에서 멀티 스레드 시스템 호출을 개선하기 위해 어떤 방법이 있나요 :
내 근로자는 다음과 같이인가?
Resque가 멀티 스레드라고 생각하는 이유는 무엇입니까? –
@DanielCukier Resque 멀티 스레드에서 내부적으로'fork'를 사용합니다 – Viren