簡體   English   中英

ASP.NET圖像處理性能瓶頸

[英]ASP.NET image processing performance bottleneck

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

那么,如何組織圖像調整大小以防止CPU滿負荷運行?

您可以使用JS在客戶端調整圖像大小。 這是一個很好的例子: 調整HTML5畫布中圖像的大小

絕對建議您在單獨的應用程序池中托管上傳處理程序。 您可以為您的Azure S2托管計划創建一個臨時插槽,並在那里處理上載。 您當然應該將上傳處理程序設置為新主機。 這樣,您的上傳過程將不會消耗您的Web應用程序資源。

高流量(上傳)將導致有關上傳大小和服務器上可用內存Out of Memory異常。 請記住,在應用程序中引用壓縮圖像文件時,它們比文件本身分配的內存要多得多(有時超過10倍 )。 如果您預計將面臨大量流量,則應該從客戶端瀏覽器直接將文件上傳到Azure Blob存儲(或Amazon S3等)之類的Blob存儲。 這樣,您就不必擔心正在進行的上傳所分配的內存。 上傳完成后,您需要調用另一個根據需要處理圖像的終結點。

亞馬遜樣品: 鏈接

在此處輸入圖片說明

關於此問題,還有一些高級主題。 在這里這里檢查

您還可以使用久經考驗的工具來進行服務器端圖像處理。 它們的性能比.NET的內置GDI +快40倍。 檢查ImageResizer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM