2010-03-08 4 views
9

У меня есть функция в моей CMS, которая позволяет пользователю загружать zip-файл, полный изображений, и сервер будет извлекать их и вставлять каждый в галерею изображений. Я заметил, что это сильно размалывает процессор и приводит к замедлению других запросов.Выполнение задач в фоновом режиме с более низким приоритетом ЦП

Я думаю использовать плагин delayed_job, чтобы делегировать каждое добавление изображения в фоновом режиме, но я также хочу дать этому процессу более низкий приоритет ЦП, чтобы он не запустил сервер.

Я довольно уверен в замедленной части упражнения, но дроссельная часть - это то место, где я застреваю. Существует ли рубиновый способ снижения приоритета вызова метода?

Это изменение размера изображения, которое вызывает перегрев процессора.

Любые идеи приветствуются :)

ответ

6

Если CMS работает на системе Linux, то вы можете сделать это с помощью команды «хороший». «nice» начнет процесс с более низким приоритетом. Самый простой способ использовать его - просто поместить приятное перед вашей командой. Так что, если вы запускали команду как

unzip uploaded-images.zip

вместо запуска

nice unzip uploaded-images.zip

Это вызовет процесс архиватор, чтобы получить более низкий приоритет процессора, позволяя другим процессам работать первым. Дополнительную информацию см. В разделе man page, например, как настроить уровень приоритета.

+0

Спасибо за это, я также наткнулся на это с помощью google: http://stackoverflow.com/questions/1340142/preventing-delayed-job-background-jobs-from-consuming-too-much-cpu-on-a -Один-се –

Смежные вопросы