2016-07-19 457 views
0

我正在ASP.NET上開發Web服務。其中一項主要功能是將一些照片(最多18張)上傳到服務器,然後處理這些照片。圖像大小調整會造成性能瓶頸。當我將最大數量的照片上傳到服務器時,CPU使用率接近100%,因此服務器上的所有頁面都沒有響應,直到圖像處理未完成。我使用MS Azure(應用程序計劃 - S2)來託管我的服務。ASP.NET圖像處理性能瓶頸

那麼,如何組織圖像大小調整以防止CPU完全加載?

回答

0

我會絕對建議您在一個單獨的應用程序池中託管上傳處理程序。您可以爲您的Azure S2託管計劃創建一個臨時插槽,並在此處進行上傳。您當然需要將上傳處理程序設置爲您的新主機。這樣你的上傳過程就不會消耗你的網絡應用資源。

高流量(上傳)將導致Out of Memory例外,其中包括服務器上的上傳大小和可用內存。請記住,當您在應用程序中引用壓縮映像文件時,壓縮映像文件會分配比文件本身多得多的內存(有時多於10x)。如果您預見到您將面臨大量流量,則應將文件從客戶端瀏覽器直接上傳到Azure Blob存儲(或Amazon S3等)的Blob存儲。這樣您就不必擔心分配的正在進行的上傳內存。上傳完成後,需要根據需要調用另一個處理圖像的端點。

亞馬遜樣品:link

enter image description here

也有這個問題的一些高級主題。檢查herehere

您還可以使用經過驗證的工具用於您的serverside圖像處理。這些可以比.NET內置的GDI +執行速度快40倍。檢查ImageResizer