由发泽 發表於 2023-8-10 00:00:00

trickle 限制用户空间带宽

<p>对于用户量大的情况下,可能一个程序就占用了你所有的网络带宽。这种情况可以通过nethogs来查看。具体参见: 《nethogs 查看每个进程使用的带宽》。这种情况下,你就需要临时限制下带宽,来确保你的网络带宽不会被一个程序耗而对其他应用造成影响。下面来介绍一款轻量级的用户空间带宽控制管理的工具------trickle。</p>
<p><strong>1. trickle介绍</strong><br>
trickle是一款轻量级的用户空间带宽控制管理的工具,用来限制如浏览器Firefox等, FTP , SSH,curl,wget,scp等等使用网络带宽。<br>
trickle通过控制socket数据读写量来控制和限制应用的上传和下载速度。要注意的是trickle使用动态链接和加载,所以只对于使用libc.so库的程序有用,其他的则无效的。由于trickle可以设置数据在socket上的传输延迟,因此就可以用来限制应用程序的网络带宽。<br>
trickle不能用于限制使用UDP协议的应用的带宽,只可用于TCP连接。也无法工作在使用静态链接的可执行程序上。</p>
<p><strong>2. 如何判定trickle对有个应用程序有效</strong><br>
根据是否使用libc.so库来判断。<br>
可以通过ldd命令来查看某个应用程序是否使用了libc.so库。如果应用程序使用了这个库,就可以用trickle来限制网络带宽,否则不行。</p><pre class="brush:bash;toolbar:false"># ldd /usr/bin/wget | grep libc.so
libc.so.6 =&gt; /lib64/libc.so.6 (0x00002adc30397000)</pre><p><strong>3. 安装trickle</strong><br>
需要先安装EPEL源,参见《CentOS / RHCE 可供使用的yum》。</p><pre class="brush:bash;toolbar:false"># yum install trickle</pre><p><strong>4. 使用trickle</strong></p><pre class="brush:bash;toolbar:false"># trickle --help
Usage: trickle [-hvVs] [-d &lt;rate&gt;] [-u &lt;rate&gt;] [-w &lt;length&gt;] [-t &lt;seconds&gt;]
               [-l &lt;length&gt;] [-n &lt;path&gt;] command ...
      -h         Help (this)
      -v         Increase verbosity level
      -V         Print trickle version
      -s         在独立模式下独立运行
      -d &lt;rate&gt;    设置最大累计下载速率为 &lt;rate&gt; KB/s
      -u &lt;rate&gt;    设置最大累计上传速度为 &lt;rate&gt; KB/s
      -w &lt;length&gt;设置窗口长度为 &lt;length&gt; KB 。默认512KB。
      -t &lt;seconds&gt; 设置默认的平滑时间 &lt;seconds&gt; s 。平滑时间决定多少时间间隔trickle将尝试让应用程序传输数据。较小的值(0.1 - 1秒)会导致更连续(平滑)会话,非常适合于交互式应用。而较大的值(1 - 10秒)可能会产生一阵阵的发送和接收数据,对需要大量带宽的应用程序更好。
      -l &lt;length&gt;设置默认的平滑长度 &lt;length&gt; KB 。 默认10 KB。
      -n &lt;path&gt;    指定trickled socket名称 &lt;path&gt; 。 默认/tmp/.trickled.sock 。
      -L &lt;ms&gt;      设置延时。</pre><p><strong>5. 举例</strong><br>
限制wget下载速度为50KB/s</p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/427e5ac31f3377b99d7d33f4699390ec.jpg" width="1425" height="132"></p>
<p><strong>6.  限制一个shell的所有命令带宽</strong></p>
<p><img src="https://zhuji.jb51.net/uploads/img/20230517/d653e5e41fe99d38b9ca02248df30a2c.jpg" width="1418" height="132"></p>
頁: [1]
查看完整版本: trickle 限制用户空间带宽