Назад | Перейти на главную страницу

Эффективная конфигурация сервера для imagemagick

Я работаю в системе с тяжелым редактированием изображений, обработанным imagemagick.

Теперь о новом сервере мне было интересно, какие системные требования являются наиболее важными для повышения производительности imagemagick и редактирования изображений, таких как преобразование и составление файлов gif, jpgs и png.

Разрешение изображений обычно составляет от 800x400 до 1980x1080 пикселей. Одновременно можно обрабатывать несколько изображений.

Я думал, что много (быстрой) ОЗУ будет наиболее важным, но тогда даже полный hd в 32-битном формате занимает всего около 8 МБ, так что, может быть, процессор важнее?

Любые идеи очень ценятся!

Обновить:
htop показывает, что наиболее вероятным узким местом является ЦП.
Поскольку imagemagick требует много ресурсов, я мог представить, что довольно быстро выйду за пределы ЦП с одним сервером. Есть идеи, как я могу динамически сбалансировать нагрузку (могут быть огромные пики)? Что-то вроде Amazon Web Services, но быстрее, так как изображения отображаются на лету?

Обработка таких маленьких изображений (и 1920x1080 является small) не требует много памяти, преобладает процессор.

Вам нужно много мощности процессора, если у вас есть много изображений для преобразования одновременно, параллельное выполнение преобразований - хорошая идея. Кроме того, поскольку его легко запускать параллельно, наличие ЦП с большим количеством ядер по сравнению с более высокой частотой даст вам более высокую производительность. Вам просто нужно убедиться, что вы запускаете много заданий одновременно.

Другими словами, ищите машины с минимальным объемом памяти (4-8 ГБ) и большим количеством ядер или даже многих процессоров. Если вы используете Amazon, то вам нужны инстансы с высоким ЦП. При очень большой нагрузке может быть хорошей идеей взглянуть на экземпляры кластера.

В зависимости от конкретного количества запросов на преобразование вам, возможно, больше повезет с горизонтальным масштабированием - с получением большего количества машин и распределением нагрузки между ними. Но это зависит от вашего конкретного варианта использования, затрат на совместное размещение или виртуальных машин и т. Д.

С htop похоже, что процессор будет узким местом. До 100% нагрузки ...

Если ваш процессор привязан, а все остальное находится на номинальных значениях, вам необходимо добавить больше процессора.

Я сделал проект фотокабины, основанный на программном обеспечении с открытым исходным кодом, мы используем ImageMagick для обработки изображений. Мы экспериментировали с платформами x86 и ARM v6 / v7. Разные размеры изображений, разные эффекты, комбинирование изображений и т. Д. Мы протестировали 256 RAM как для старых компьютеров x86, так и для ARM (Raspberry Pi). Узким местом был ЦП, и мы практически не могли использовать одно ядро ​​для мгновенной обработки - это занимало около 30 секунд для ARMv6, 10 секунд для P3 и 1 секунду для новейшего ядра с тактовой частотой 1 ГГц. Это процессор. Если вы запускаете приложения ImageMagick из командной строки, вам следует проверить / tmp, который обычно является tmpfs / shared memory. Для нас это занимало около 64 МБ на одно большое печатное изображение, сложенное из четырех JPEG с камер Canon. Если вы запускаете сразу несколько процессов - просто добавьте больше ядер.

Как сбалансировать нагрузку? От вашей конфигурации зависит, как работает ваша система. Вы пользуетесь веб-сервисами, запускаете ImageMagick с php или имеете свои собственные программы и т. Д ... Пожалуйста, поясните ...

HAProxy позволит вам «сбалансировать нагрузку» между несколькими серверами со стороны сети ... и обеспечить аварийное переключение.