В моем приложении Rails есть ряд задач, которые выгружаются в фоновые процессы, такие как изменение размера изображения и загрузка в S3. Я использую delayed_job для управления этими процессами.
Эти процессы, особенно создание эскизов PDF-файлов (с помощью Ghostscript) и изменение размера изображений (с помощью ImageMagick), интенсивно используют ЦП и часто потребляют 100% времени ЦП. Поскольку эти задания выполняются на том же сервере (RedHat Linux), что и само веб-приложение, а также БД, они могут привести к тому, что наше веб-приложение перестанет отвечать.
Одним из решений является получение другого сервера, на котором будут выполняться только фоновые задания. Я так понимаю, это будет оптимальное решение? Однако, поскольку это не то, что я могу сделать немедленно, мне интересно, можно ли каким-то образом заставить фоновые задания работать с более низким приоритетом операционной системы и, следовательно, потреблять меньше циклов ЦП при выполнении своей работы?
Мысли оценены.