ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как снизить нагрузку во время переработки данных в цикле?

По запросу пользователя перерабатываю большое количество контента, в частности изображения, все происходит в цикле (async.each). Переработки изображений заключается в их кропе и ресайзе, затем идет архивация. Я не тестировал еще данное действие по нагрузкам, но думаю нагрузка будет и не малая.

Как можно снизить её? К примеру обрабатывать изображение с каким нибудь интервалом, я первый раз с этим сталкиваюсь и мои мысли упираются только в setTimeout, позволить ли он передохнуть серверу? Или есть что то более интересное?

К примеру хочу сделать как то так
async.each(data, function(x, callback) {

    setTimeout(function(){
         // тут выполняю какие то действия

         callback(null);
    });

}, function(){
    callback(null, data);
});

Прокатит ли? Альтернативы?
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
Нагрузку никуда не деть, её можно только перенести во времени. Например у вас паралельно ещё что-то делается и вам надо хотя бы немного процессора - тогда да имеет смысл поставить Timeout например 1 секунду в неё процессор сделает свои остальные дела и продолжит работу. Либо ставить всё в очередь и запускать задачу ночью когда это никто не заметит.
Ну или переписывать операцию с высокой нагрузкой на низкоуровневых языках.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы