Пожалуйста, рассмотрите следующую команду для пакета imagemagick:
sudo convert -resize 460x200 /path/to/test1.jpg /path/to/test2.jpg
Теперь test1.jpg
это довольно большое изображение (12,5 МБ), но не неслыханные размеры, но сервер, с которого я работаю, имеет только 1 ГБ памяти ( Amazon EC2 t2.micro, если это помогает)
Не выдается никакой ошибки, и все же не test2.jpg
создается. Я проверил это с меньшими изображениями, и это работает отлично. Я бы подумал 1G, если бы памяти было достаточно для управления изменением размера, но, возможно, нет?
Какие у меня варианты, мне нужно больше памяти или я что-то упустил?
Любые предложения приветствуются!
Запрошенные правки
Выходные Трассирования показывает: +++ killed by SIGKILL +++
наряду с многими команд , которые выглядят нормально (открытие /usr/share/local
и чтение длинных строк, которые я принимаю данные изображений)
бесплатно дает мне:
total used free shared buffers cached
Mem: 1016292 278348 737944 6412 460 13356
-/+ buffers/cache: 264532 751760
Swap: 0 0 0
Таким образом, похоже, что своп не включен, поэтому я попытаюсь создать файл подкачки, чтобы посмотреть, решит ли это мои проблемы.
Файл дает мне:
testprint10Mbv2.jpg: JPEG image data, EXIF standard
Я также вставил бы полный путь / путь / к / img, но, к сожалению, он содержит конфиденциальные данные (адреса электронной почты клиента и т. Д.)
sudo
в этой команде?-limit memory 64MiB
(32 МБ, вероятно, слишком мало. По умолчанию 1,5 ГБ). И это должно дать вам некоторый описательный вывод в случае неудачи.strace
добавив ее перед командой, посмотрите, какие системные вызовы сделаны, и были выданы ошибки. Дайте нам знатьОтветы:
Я предполагаю, что у вас заканчивается ОЗУ. Вы можете проверить это с помощью
watch cat /proc/meminfo
вашего процесса.Возможно, у вас недостаточно оперативной памяти и / или SWAP для выполнения вашей задачи.
Из-за низкого уровня
swapon -a
памяти, убедитесь, что подкачка включена, и если подкачка не настроена в системе, создайте раздел для подкачки на неиспользуемом дисковом пространстве и включите его. Это, вероятно, решит проблему. Хороший ответ от @Takkat о том, как это сделать, здесь. Если у вас нет доступа к разделению сервера, вы также можете использовать файл подкачки для подкачки.источник
Amazon EC2 t2.micro
, я отредактировал вопрос, чтобы прояснить, добавил тег, чтобы было легко связать его с другими связанными вопросамиПроблема в вопросе была решена путем добавления соответствующего обмена. Для полноты позвольте мне дать краткий обзор дополнительных параметров, которые мы имеем при запуске Image Magick
convert
для больших файлов в системах с низкой памятью, или когда нет доступного подкачки, или если подкачка была слишком маленькой.Методы, упомянутые ниже, подробно описаны в руководстве Image Magick:
Действительно массовая обработка изображений
Резюме:
Ограничить использование памяти с помощью опции
-limit
Таким образом Image Magick создаст временный файл для обработки изображений, как только будут превышены заданные пределы памяти. Для этого требуется разрешение на запись для Image Magick во временный каталог файлов. Мы можем указать любой путь, по которому временный файл будет создан в переменной окружения
MAGICK_TMPDIR
. Пример команды может выглядеть примерно так:Работа на диске, а не в оперативной памяти значительно замедлит скорость обработки.
Работа с "Дисковые файлы с отображенной памятью"
Создание файлов MPC требует ресурсов, но для преобразования файлов MPC не требуется так много ресурсов. Поэтому это может быть учтено, если нам нужно конвертировать один и тот же источник с разными параметрами несколько раз. Рабочий процесс может быть похож на это:
Работайте над небольшими участками изображения, используя
stream
Использование потоковых заявок для обработки только части исходного изображения без необходимости загрузки всего изображения в память.
В приведенном выше примере
-extract
опция принимает значения размера и смещения, как определено геометрией Image Magick . Придется склеить плитки, чтобы получить масштабированное изображение в целом. К сожалению, поток не работает для всех форматов изображений, но должен нормально работать с изображениями JPEG.источник