Linux下的程序限速软件Trickle
之前讲过如何对 opnvpn 总体限速,这次来了一个更严格的程序限速需求: 场景如下: 两个机房间有一条专线 100M 两个机房间需要同步数据,同步需要限制到60M,给别的程序留出带宽空间 传输是多个文件,用 rsync 并发传送 分析了一下脚本的核心部分 find . -type f | grep $(date -d"-1 day" +'%Y%m%d') |xargs -I % -P 30 rsync -auvPR % 192.168.9.17::mysql 发现是利用 xargs 的并发,-P 30 最大并发30个,启动了 rsync 同步 rsync 没有限速,这就麻烦了。 一、单文件单独限速 首先是使用 rsync 的 –bwlimit=600 参数,把速度限制为 600KB/s ,600×8=4800,单进程基本是5M的速度,最多只能跑12个了,就会跑到60M。 这样也不太对,尤其是 rsync 并发进程逐渐减少,少于12个的时候,这样就出现跑不满60M的现象。 二、多文件整体限速 那么 rsync 支持多文件传输 ,使用如下格式整体限速 rsync --bwlimit=7200 -auvPR 文件1 文件2 文件3 192.168.9.17::mysql 问题又来了,文件1 文件2 文件3 的路径非常长,而文件个数不定,有撑爆命令行单行长度限制的可能,也不可行 三、tc 使用 tc 可以控制源ip或者目的ip的带宽,但是本机网卡是万兆光卡,生产环境,每时每刻都有数据读写。 一旦错了,就直接完蛋了。也不太可行 四、杀器trickle 寻找了半天,终于找到了个大杀器trickle,可以对程序单独限速,也可以对一堆程序整体限速 安装: ...