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