Executando tarefas em segundo plano com menor prioridade da CPU
-
25-09-2019 - |
Pergunta
Eu tenho um recurso no meu CMS que permite que um usuário faça upload de um arquivo zip cheio de imagens e o servidor as extrairá e insira cada uma em uma galeria de imagens. Percebi que isso tritura a CPU bastante severamente e faz com que outros pedidos diminuam a velocidade.
Estou pensando em usar o plug -in touched_job para delegar cada adição de imagem em segundo plano, mas também quero dar a esse processo uma prioridade menor da CPU para que não atire no servidor.
Estou bastante confiante na parte atrasada do exercício, mas a parte acelerada é onde estou preso. Existe uma maneira rubi de diminuir a prioridade de uma chamada de método?
É a imagem redimensionada que causa a mastigação da CPU.
Quaisquer ideias são bem -vindas :)
Solução
Se o seu CMS estiver em execução no sistema Linux, você poderá fazer isso usando o comando "Nice". "Nice" iniciará um processo com uma prioridade mais baixa. A maneira mais fácil de usá -lo é apenas colocar bem na frente do seu comando. Então, se você estava executando o comando como
unzip uploaded-images.zip
Em vez disso, execute
nice unzip uploaded-images.zip
Isso fará com que o processo descompacente obtenha uma prioridade menor da CPU, permitindo que outros processos sejam executados primeiro. Veja o página de homem Para mais opções, como ajustar o nível de prioridade.