2016-07-19 3 views
0

Я разрабатываю веб-службы на ASP.NET. Одной из ключевых особенностей является загрузка некоторых фотографий (максимум - 18) на сервер, после чего эти фотографии обрабатываются. У меня есть узкое место производительности с изменением размера изображения. Когда я загружаю максимальное количество фотографий на сервер, тогда загрузка процессора приближается к 100%, поэтому все страницы на сервере не реагируют, пока обработка изображений не будет завершена. Я использую MS Azure (план приложения - S2) для размещения моего сервиса.ASP.NET обработки изображений узкое место

Итак, как организовать изменение размера изображения для предотвращения полной загрузки процессора?

ответ

1

Вы можете изменить размер изображений на стороне клиента с помощью JS. Это хороший пример: Resizing an image in an HTML5 canvas

+0

Спасибо! Может быть, это лучшее решение. –

0

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

Высокий трафик (закачки) приведет к Out of Memory исключениям относительно размера выгрузки и доступной памяти на сервере. Помните, что файлы сжатого изображения выделяют гораздо больше памяти, чем сам файл (более 10x), когда вы ссылаетесь на них в своем приложении. Если вы ожидаете, что столкнетесь с большими объемами трафика, вы должны загружать файлы непосредственно в хранилище blob, например, в Azure Blob Storage (или Amazon S3 и т. Д.) Из браузера клиента. Таким образом, вам не нужно будет беспокоиться о выделенной памяти текущих загрузок. После завершения загрузки вам необходимо вызвать другую конечную точку, обрабатывающую изображения по мере необходимости.

амазонки Пример:link

enter image description here

Есть также некоторые дополнительные темы об этой проблеме. Проверка here и here

Вы также можете использовать проверенные инструменты для обработки изображений на серверах. Они могут выполнять до 40 раз быстрее, чем встроенный GDI +. Проверьте ImageResizer.

Смежные вопросы