1
nice -n 19 find . -type f \( -iname "*.php" -o -iname "*.js" -o -iname "*.inc" \) \
  -exec zip live.zip '{}' \;

上述命令在我们的实时 CentOS 服务器上运行,就好像该nice命令不存在一样。大约 60 秒后,我可以看到使用该命令zip时它位于“顶部” 。top服务器开始翻倒,我不得不让命令崩溃。

4

2 回答 2

2

从评论中我推断您的服务器内存不足,这实际上根本不是 CPU 或 I/O 或优先级问题。

尝试用 tar 之类的流式解决方案替换压缩。这应该会大大减少所需的内存:

find . -type f \( -iname "*.php" -o -iname "*.js" -o -iname "*.inc" \) -print0 \
    | xargs -0 tar cvzf live.tar.gz 

在此命令上使用nice仍然是进一步减少影响的选择。它必须与可能更长的运行时间和同时使用的其他资源(尤其是内存)相平衡。

于 2012-05-15T14:45:21.253 回答
2

nice只设置一个进程的调度优先级。它不限制它消耗多少 CPU 时间。

所以:如果一个低优先级的进程想要消耗大量的 CPU 时间/资源,那么它得到它们。直到具有更高优先级的进程占用 CPU 时间。

关键是:如果 CPU 没有其他事情可做,那么为什么不将所有 CPU 时间提供给需要它的进程,即使它没有高优先级?

如果您想将 CPU 使用率限制为最大值的百分比,请考虑使用类似cpulimit


编辑:

zip可能会严重减慢速度的其他原因是:

  1. 磁盘 I/O:您可以ionice在某些发行版上控制它(不确定 CentOS 是否默认具有它) - David Schmitt 在下面的评论中指出了这一点。

  2. zip可能会分配大量内存,并换出其他进程。然后,当这些进程唤醒时(比如mysqld收到查询),它们就会变得迟缓。您可以通过减少Swappiness来解决这个问题。但这是一个系统级参数,您可能希望保持不变。

于 2012-05-15T11:37:13.410 回答