按进程限制带宽

按进程限制带宽

我的服务器每小时运行一次备份进程(实际上是一个 bash 脚本)。此备份例程的一部分是将更改同步到远程系统(包括修订控制等)。这很有效,几乎不占用 CPU 或内存,是此系统的完美备份解决方案。

然而,问题在于它存在于非常有限的出站带宽上,并且每小时脚本都会锁定系统 30-90 秒(取决于需要同步多少)。情况变得非常糟糕,即使我在备份时间段内使用 SSH 连接,终端连接也会锁定并需要 5 秒以上的时间才能响应每一个击键。

问题:如何根据每个进程、每个程序或每个脚本限制出站带宽?如果有所不同,我会使用 Ubuntu 服务器。有没有可以做到这一点的实用程序?

为了获得额外的学分,是否有任何关于绑定/拥有网络连接的 C/C++ 参考资料可供我用来创建自己的程序?例如:Apache 抓取端口 80,但每当它尝试发送某些内容时,我的程序就会跳入并限制 Apache 和硬件级网络接口之间的连接。这可能吗?

(注:我愿意考虑修改 Linux 内核的选项,但前提是没有其他可用选项)。

答案1

你应该试试 http://monkey.org/~marius/pages/?page=trickle(轻量级用户空间带宽限制工具)和http://klicman.org/throttle/(带宽限制管道),似乎就是您所需要的。

答案2

看看 nice、ionice 和http://stromberg.dnsalias.org/~strombrg/slowdown/

您还可以研究网络端的流量整形路由器。

如果您的备份程序尚未执行增量、压缩和重复数据删除,您可能也需要研究这些功能,以减少备份过程所占用的带宽量。

相关内容