2008-10-25 3 views
1

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

ответ

0

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

2

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

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

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

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

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

6

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

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

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

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

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

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

Удачи вам!