我有服务器每小时运行一个备份过程(实际上是一个bash脚本)。 这个备份例程的一部分是将更改同步到远程系统(包括版本控制等)。 这样做效果很好,几乎不占用CPU或内存,是该系统的完美备份解决scheme。
然而,问题在于它存在的出站带宽非常有限,每小时脚本locking系统30-90秒(取决于需要同步多less)。 它变得非常糟糕,即使在备份时间段内使用SSH连接,terminal连接也会locking,并且需要5秒钟才能响应每个按键。
问题:如何限制每个进程,每个程序或每个脚本的出站带宽? 如果它有所作为,我使用Ubuntu服务器。 有没有这样做的公用事业?
为了额外的功劳,是否有任何C / C ++引用关于绑定/拥有networking连接,我可以用它来创build我自己的程序? 例如:Apache抓取端口80,但是每当它尝试发送一些东西时,我的程序就会跳入并扼制apache和硬件级networking接口之间的连接。 这甚至有可能吗?
(注意:我愿意考虑修改linux内核的选项,但只有在没有其他可用的情况下)。
你应该尝试http://monkey.org/~marius/pages/?page=trickle (轻用户带宽限制工具)和http://klicman.org/throttle/ (一个带宽限制pipe道),似乎是你需要。
看看好,ionice和http://stromberg.dnsalias.org/~strombrg/slowdown/
您也可以查看networking端的stream量整形路由器。
如果您的备份程序还没有执行增量,压缩和重复数据删除,您可能还需要考虑这一点,以减less备份过程推送的带宽量。