限制复印速度

不幸的是,在我们的一台服务器上,我们的硬盘性能非常糟糕,只要我们开始更大的复制过程,就会停止提供任何Apache响应,这真的很糟糕。

有没有办法限制一个拷贝过程的带宽,所以它不会消​​耗所有硬盘的性能,还为Apache和其他进程留下一些空间来完成他们的工作?

您可以使用带宽限制器选项设置rsync ,例如,以〜5MB / s的速度复制

 rsync -r /path/to/src /path/to/dest --bwlimit=5120 --progress 

--progress参数是可选的,但会确认复制带宽和进度。 -r是用于recursion复制目录而不是文件。

不幸的是,我不允许评论答案,所以这里是质粒87给出的答案的一个小扩展:如果你试图recursion地复制文件夹,你应该加-r参数给命令。 除此之外它是完美的。

你最好的select,恕我直言,就是运行cp进程nice ,减less它的优先级。 它不会限制进程本身的带宽,只能限制复制进程相对于系统上所有其他进程的内核/ CPU的注意力。 使用正常优先级的Apache,应该可以在正在进行复制时正常服务器。

目前还不清楚您正在运行的复制过程是否是一般服务器工作负载的一部分,或者是在机器负载很less时可以调度的。

如果复制频繁进行,并且使用内核> 2.6.25,则可能会发现使用的问题。

从手册页:

这个程序设置或获得一个程序的io调度类和优先级。 如果没有给出参数或只是-p,ionice将查询当前的io调度类和该进程的优先级。

例如,要使用“空闲”调度类复制文件,可以执行如下操作:

 ionice -c 3 cp /tmp/example.gpg /tmp/another_example.gpg 

-c 3开关相当于selectidle调度类,手册中指出:

 A program running with idle io priority will only get disk time when no other program has asked for disk io for a defined grace period. The impact of idle io processes on normal system activity should be zero. 

这在我看来正是你正在寻找的东西。