ASP.NET图像处理性能瓶颈

时间:2016-07-19 08:24:29

标签: c# asp.net image-processing

我正在开发ASP.NET上的Web服务。其中一个关键功能是将一些照片(最多18张)上传到服务器,之后这些照片正在处理中。我有图像大小调整的性能瓶颈。当我将最大数量的照片上传到服务器时,CPU使用率接近100%,因此服务器上的所有页面都没有响应,直到图像处理未完成。我使用MS Azure(应用程序计划 - S2)来托管我的服务。

那么,如何组织图像大小调整以防止完全CPU负载?

2 个答案:

答案 0 :(得分:1)

您可以使用JS在客户端调整图像大小。这是一个很好的例子:Resizing an image in an HTML5 canvas

答案 1 :(得分:0)

绝对建议您在单独的应用池上托管上传处理程序。您可以为Azure S2主机方案创建一个临时插槽,并处理上传。您当然需要将上传处理程序设置为新主机。这样,您的上传过程就不会消耗您的网络应用资源。

高流量(上传)会导致有关您的上传大小和服务器上的可用内存的Out of Memory例外情况。请记住,当您在应用程序中引用压缩的图像文件时,压缩的图像文件会分配比文件本身更多的内存(有时超过 10x )。如果您预见到您将面临大量流量,则应将文件从客户端浏览器直接上传到Azure Blob存储(或Amazon S3等)的Blob存储。这样您就不必担心正在进行的上传的已分配内存。上传完成后,您需要调用另一个端点,根据需要处理图像。

亚马逊样本: link

enter image description here

此问题还有一些高级主题。查看herehere

您还可以使用经过充分验证的工具进行服务器端图像处理。这些可以比.NET的内置GDI +快40倍。检查ImageResizer

相关问题