nice -n 19 find . -type f \( -iname "*.php" -o -iname "*.js" -o -iname "*.inc" \) \
-exec zip live.zip '{}' \;
上面的命令在我们的实时CentOS服务器上运行,好像没有nice
命令一样。大约60秒后,我可以看到zip
在使用top
命令时位于“顶部”。服务器开始崩溃,我不得不崩溃命令。
答案 0 :(得分:2)
nice
仅设置进程的调度优先级。它不会限制它消耗的CPU时间。
所以:如果低优先级进程想要消耗大量的CPU时间/资源,那么它将获取它们。 直到具有更高优先级的进程占用CPU时间。
重点是:如果CPU没有其他任何事情可做,那么为什么不向所需的进程提供所有CPU时间,即使它没有高优先级呢?
如果您想将CPU使用率限制为最大值的百分比,请考虑使用类似cpulimit
编辑:
zip
可能导致事情进展缓慢的其他原因是:
磁盘I / O:您可以在某些发行版中使用ionice
进行控制(不确定CentOS是否默认使用它) - David Schmitt在下面的评论中指出了这一点。
zip
可能会分配大量内存,并换出其他进程。然后,当这些进程被唤醒时(比如mysqld
得到一个查询),它们就会缓慢。您可以通过减少Swappiness来做一些事情。但这是一个系统级参数,您可能希望保持不变。
答案 1 :(得分: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
仍然是进一步减少影响的选择。它必须与可能更长的运行时间以及同时使用的其他资源(尤其是内存)保持平衡。