ImageMagick会耗尽内存,直到应用程序最终崩溃

时间:2018-07-22 19:56:36

标签: c# .net memory amazon-ec2 imagemagick

我正在使用Magick.Net-Q16-AnyCPU nuget软件包来调整第一次下载的图像的大小。在我的本地计算机上,它运行正常,没有问题。

我已经部署了此工具(作为控制台应用程序),并且该工具自动按计划在AWS EC2实例上运行。在EC2实例上,该工具会逐渐消耗掉所有RAM,直到没有可用的RAM,然后由于明显的原因而崩溃。

我真的不明白为什么会在EC2实例上而不是在我的机器上发生这种情况。这使我认为这不是代码问题,而是环境问题。无论如何,我都在下面包含了我的代码。

private void resizeVariant(ImageVariant imageVariant, byte[] data)
{
    using (var image = new MagickImage(data))
    {
        image.Format = MagickFormat.Jpeg;
        image.Interlace = Interlace.Jpeg; // Make image progressive

        var geometry = new MagickGeometry(imageVariant.Width, imageVariant.Height);
        geometry.FillArea = true;

        try
        {
            image.Resize(geometry);
            image.Crop(imageVariant.Width, imageVariant.Height);
            image.RePage();

            imageVariant.ResizedImageData = image.ToByteArray();
        }
        catch (Exception ex)
        {
            this.logger.Error($"Error resizing image variant for image {imageVariant.S3Key} ({imageVariant.Width},{imageVariant.Height})\n{ex.Message}\n{ex.StackTrace}");
            image.Dispose();
        }

        image.Dispose();
    }
}

框架 :. NET Core 2.0, EC2实例类型: Microsoft Windows Server 2016

0 个答案:

没有答案