Imagemagick mogrify 提升 Linux 服务器平均负载

Imagemagick mogrify 提升 Linux 服务器平均负载

据我所知,理论上每个 CPU 核心乘以 1 的因子可以找出最佳平均负载。因此,具有 8 个 CPU 核心的服务器的最佳平均负载为 8,16 个核心 = 16,依此类推。但是,当使用 Imagemagick 的 mogrify 时,我可以看到巨大的平均负载数字:

top - 14:00:44 up 9 days, 20:12,  6 users,  load average: 130.37, 87.53, 56.94
Tasks: 588 total,  11 running, 577 sleeping,   0 stopped,   0 zombie
Cpu(s): 99.8%us,  0.2%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  49555072k total, 33129928k used, 16425144k free,  3813092k buffers
Swap: 23438824k total,    47276k used, 23391548k free, 26145156k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                    
29490 user1      20   0  121m  33m 2728 R  240  0.1   9:10.52 mogrify                                                                    
29337 user1      20   0  121m  33m 2728 R  234  0.1  12:01.94 mogrify                                                                    
29882 user1      20   0  121m  33m 2728 R  231  0.1   3:57.54 mogrify                                                                    
29232 user1      20   0  121m  33m 2728 R  223  0.1  11:34.54 mogrify                                                                    
29514 user1      20   0  122m  33m 2728 R  223  0.1   9:22.84 mogrify                                                                    
29689 user1      20   0  121m  33m 2728 R  219  0.1   7:28.18 mogrify                                                                    
29204 user1      20   0  121m  33m 2728 R  206  0.1  12:21.33 mogrify

从中可以清楚看出top- 服务器没有问题。此行为仅在调用时发生mogrify

为什么会发生这种情况?我该如何修复它或至少将其调低一点?

谢谢!

编辑:通常它们会运行那么长时间。服务器像往常一样响应迅速。我正在处理 618 张平均大小为 2.5 MB 的图像。负载分散在几台服务器上,输出top看起来非常相似。我读过此主题我还没有测试过。在我看来,mogrify(或 Imagemagick)“高估”了 CPU。因此每个作业的 CPU 使用率超过 200%。

答案1

你正在进行图形处理。这本质上是 CPU 密集型的。

解决方案是停止进行图形处理,或者至少少做一点 - 更新正在调用的内容,mogrify这样它就无法运行那么多并行任务。如果这不是一个选项,请分担负载(添加另一台服务器并将部分工作发送到那里)。


请注意,如果您的平均负载为 130,并且您的系统仍然响应并及时执行您需要它做的所有事情,那么您就没有问题,您有一个“问题”(它看起来不太好,乍一看任何系统管理员都会告诉您它可能是一件坏事,您应该看看我上面描述的解决方案,但如果它没有损害任何东西并且在您扩大规模时它不会变得更糟,您可以将其忽略为“此环境的正常现象”)。

答案2

我找到了解决方案。我对ImageMagick6.5.1 和 6.5.7 两个版本进行了测试。旧版本随 Ubuntu Karmic 9.10 一起提供,新版本随 Ubuntu Lucid 10.04 一起提供。两个版本都是 64 位版本。我注意到 6.5.7 版本比 6.5.1 版本更快,并且不会给服务器带来太多负载。正如人们所预料的那样,它产生了正常的个位数负载。两个版本mogrify都是多线程的。

所以,现在我很满意。如果我有空,我会检查一下具体的区别是什么。

相关内容