Как лучше всего изменить размер изображения вне сервера - PullRequest
1 голос
/ 25 октября 2008

У меня есть сайт, на который пользователи загружают изображения. Эти изображения изменяются в размерах. В настоящее время я делаю это на своем сервере, но думал об обработке этого на AWS или что-то подобное. Это хорошая идея?

Ответы [ 3 ]

6 голосов
/ 27 октября 2008

Я использую EC2 и выделенные серверы для подобных задач, и вот несколько советов:

  1. Используйте как можно меньше IO. Если вы намереваетесь использовать такие вещи, как ImageMagick, знайте, что запись на диск - это пустая трата ресурсов io (если вы все равно не хотите ее кешировать). PHP / GD позволяет отправлять jpeg непосредственно в ответ http.

  2. Освободите ОЗУ как можно скорее: освобождайте источник и изменяйте размер изображения, когда можете. Исключите вероятность замены памяти вашим сервером.

  3. EC2 работает очень медленно с переключениями контекста. Поэтому старайтесь как можно меньше. Процессоры, такие как Gimp, чрезвычайно-медленные (уменьшение, которое занимало 0,2 секунды на выделенном, занимало 7 секунд на EC2.) Кроме того, ImageMagick работает очень медленно. Если вы можете, используйте PHP / GD для всей вашей обработки.

  4. Не забудьте установить максимальный объем памяти. Вам понадобится две копии изображения в памяти (исходный и уменьшенный).

  5. Последнее, но не менее важное: начать с реального времени. Не начинайте с чрезмерного решения очередей mysql и внешних демонов. Это будет трудно поддерживать в долгосрочной перспективе. Так что попробуйте в реальном времени, прежде чем строить ракету.

Удачи!

2 голосов
/ 25 октября 2008

Вам необходимо выяснить, сколько нужно обработать ваши изображения и сколько вы ожидаете обработки.

Если ваш сервер может обрабатывать их в режиме реального времени при максимальной нагрузке, не беспокойтесь об этом прямо сейчас.

Я бы сказал, что если ваш сервер может справиться с нагрузкой, но не в режиме реального времени, я бы создал очередь на сервере и дал бы заданию cron или демону обработать изображения вне запроса. Если очередь начинает расти или ваш сервер начинает перегружаться, вы можете переместить ее на другой компьютер.

Если эта другая машина не может справиться с нагрузкой, вы сможете легко добавить больше машин для обработки очереди.

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

0 голосов
/ 25 октября 2008

Вы можете использовать сервер EC2 для изменения размера и сохранения их в S3, если вы ожидаете необходимости масштабного масштабирования и загрузки. В конечном счете, это будет зависеть от множества факторов в зависимости от вашего роста и бюджета. Какова текущая нагрузка на ваш сервер и вы близки к мощности? Каков размер и объем процессора, необходимый для изменения размера изображений, и можно ли их кэшировать и использовать повторно? Как используются изображения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...