我正在操作一个通过 imagemagick 处理大量图像编辑的系统。
现在,对于新服务器,我想知道哪些系统要求对于提高 imagemagick 和图像编辑(例如转换和合成 gif、jpg 和 png)的性能最重要。
图片分辨率通常在 800x400 到 1980x1080 像素之间。可以同时处理多张图像。
我认为大量(快速) RAM 是最重要的,但即使是 32 位全高清也仅需 8MB 左右,所以也许 CPU 更重要?
非常感谢任何见解!
更新:
htop 显示 CPU 很可能是瓶颈。
由于 imagemagick 需要大量资源,我可以想象一台服务器很快就会达到 CPU 限制。有什么想法可以让我动态平衡负载(可能会出现巨大的峰值)?类似于 Amazon Web Services,但由于图像是即时渲染的,所以速度更快?
答案1
处理如此小的图像(和1920x1080是较小(small)不需要太多内存,CPU 占主导地位。
您需要大量的 CPU 能力,如果您一次要转换多张图片,并行运行转换是个好主意。此外,由于并行运行很容易,因此拥有更多内核而不是更高频率的 CPU 会为您带来更高的性能。您只需要确保同时运行多个作业。
换句话说,寻找具有最少内存(4-8GB)和许多内核甚至许多 CPU 的机器。如果您使用的是 Amazon,那么高 CPU 实例就是您要找的。对于非常大的负载,查看集群实例可能是个好主意。
根据转换请求的具体数量,您可能更适合水平扩展 - 获取更多机器并将负载分散到它们上。但这取决于您的具体用例、共置成本或 VM 成本等。
答案2
我做过 photobooth 项目,基于开源软件,我们使用 ImageMagick 进行图像处理。我们在 x86 和 ARM v6/v7 平台上都做过实验。不同的图像大小、不同的效果、图像组合等。我们在旧的 x86 PC 和 ARM(Raspberry Pi)上使用 256 RAM 进行了测试。CPU 是瓶颈,我们实际上无法使用 1 个核心进行即时处理 - 在 ARMv6 上大约需要 30 秒才能完成,在 P3 上需要 10 秒,1 GHz 最新核心需要 1 秒。这是一个 CPU。如果您从命令行运行 ImageMagick 应用程序,则应检查 /tmp,它通常是 tmpfs/共享内存。对于我们来说,每张大型打印图像大约需要 64MB,由佳能相机的四张 jpeg 组合而成。如果您同时运行多个进程 - 只需添加更多核心。
如何平衡负载?取决于您的配置、系统的工作方式。您是否使用 Web 服务、使用 php 运行 ImageMagick 或拥有自己的程序等...请澄清...
答案3
从 htop 来看,CPU 似乎是瓶颈。它的工作负载高达 100%...
如果您的 CPU 处于固定值并且其他一切都处于标称值,那么您需要添加更多 CPU。
答案4
HAProxy 将让您从网络方面在多个服务器之间进行“负载平衡”...并提供故障转移。