将PDF转换为图像时的可怕性能

时间:2014-04-30 06:19:46

标签: asp.net pdf amazon-web-services magick.net

我已指定将各个PDF页面转换为JPEG格式的任务。

使用Magick.NET,我在运行项目的任何本地计算机上都能获得非常不错的转换速度。

我的实时环境在Amazon的Elastic Beanstalk下,使用EC2实例。它是一个t1.micro实例,具有615MB RAM和~1.83GHz的CPU。

部署项目后,我在计算机和服务器上都使用Magick.NET x86 Q16Ghostscript x86Visual C++ Redistributable VS2012 x86

代码从S3 Bucket下载PDF并在本地保存,因此转换也在本地进行。

这是它开始变得奇怪的地方。

测试转换#1的时间(我还有一个RDP窗口打开服务器进行监控):

  • 点击我漂亮而有光泽的Split to images按钮
  • 下载即将完成
  • image.Read(),其中读取PDF需要很长时间才能完成(有时在2-8分钟之间),每次我的浏览器都会以空白(白色)页面进行响应。
  • 我按原样离开浏览器的白页,然后继续监视服务器。在发生转换的文件夹中,服务器SLOOOWLY开始在文件夹中写入每个60KB的图像(对于大小为1.7MB的6页PDF,整个过程可能需要5到15分钟,服务器处于非常缓慢的状态
  • 。那个时间以及稍后的事情)

测试转换#2:

  • 使用x64版本替换了上述说明中提到的所有内容。 同样的事情。

测试转换#3 /#4:

  • 使用Magick.NET x86 / x64替换Magick.NET x86 / x64 Q16 Q8

同样的事情。

在每次转换期间,CPU为100%,内存为70%

我的代码如下:

Dim response As GetObjectResponse = client.GetObject(req)

Try

    Using response
        Dim dest As String = Path.Combine(Server.MapPath("~/S3"), EnvName)

        If Not File.Exists(dest) Then
            response.WriteResponseStreamToFile(dest)
        End If
    End Using

    Dim settings As New MagickReadSettings
    settings.Density = New MagickGeometry(300, 300)

    Dim images As New MagickImageCollection

    Using images
        images.Read(Server.MapPath("~/S3/" & EnvName & ""), settings)

        Dim pageCount As Integer = 1

        For Each img As MagickImage In images

            img.Resize(700, 900)
            img.Format = MagickFormat.Jpeg
            img.Trim()
            img.Write("~/S3/" & EnvName & "_Page_" & pageCount & ".jpeg")

            Literal1.Text &= "Page " & pageCount & " is done" 'For debugging purposes
            pageCount += 1
        Next

        Literal1.Text &= "Success"
    End Using

Catch ex As Exception
    Literal1.Text = ex.ToString
End Try

2 个答案:

答案 0 :(得分:3)

T1微型实例是你在沃尔玛(几乎)购买的极低端笔记本电脑的等效功能 - 并不是说​​它们对很多东西都不是很有用,但是在Windows中使用高功率,CPU密集型处理环境不是其中之一。

最简单的事情是启动一个更合适的大小实例,看看你的问题是否神奇地消失了。

答案 1 :(得分:0)

您可能希望切换到使用Windows附带的新PDF API。可靠,快速。

http://msdn.microsoft.com/en-US/library/windows/apps/windows.data.pdf.aspx