Как изменить размер изображений вне сервера

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

3 ответа

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

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

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

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

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

  • И последнее, но не менее важное: начните с реального времени. Не начинайте с решения overkill mysql queues и внешних демонов. В конечном итоге их будет сложно поддерживать. Поэтому дайте в реальном времени попробовать, прежде чем строить ракету.

Удачи!


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

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

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

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

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


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

licensed under cc by-sa 3.0 with attribution.