Skip to content
当前位置:🏠 首页  / 文章归档 / 2025

tencentos用tc设置限速

发布时间:2025-09-22 12:53:14

我们购买的服务器带宽通常分为独享和共享两种。独享带宽完全归自己使用,而共享带宽则是多个用户共同使用同一份带宽资源。因为像个人博客这类服务并非持续高流量,大部分时间带宽处于闲置状态,大家分时使用更经济。

不过前段时间我在QQ群里遇到个情况:有用户长期占满共享带宽,导致其他用户可用带宽被挤占。毕竟带宽是花钱买的资源,谁也不想自己需要时被别人"霸占"。这让我想到"己所不欲,勿施于人",既然不希望别人占满带宽,自己也不该这样做。

于是我研究了Linux下的"tc"流量控制工具,决定给自己的服务器设置带宽上限。我的共享带宽是10Mb/s,按40%的比例限制最高使用4Mb/s(既保证正常需求,又避免过度占用公共资源)。以下是具体配置方法,方便后续查阅复用:

bash
ip a
#查看网卡信息,在其中找到实际ip地址前面对应的网卡名称,比如我的是ens17

#删除原有限速规则
sudo tc qdisc del dev ens17 root 2>/dev/null

#添加新的规则(限速4Mb/s)
sudo tc qdisc add dev ens17 root tbf rate 4mbit burst 150kbit latency 50ms

#查看规则
tc qdisc show dev ens17

#注意,规则是临时的,重启会失效,不过服务器一般不经常重启。

这样既遵守共享规则,也能维持服务器间的网络公平性。不然,万一哪天服务器因为什么真的带宽跑满了一段时间,服务商后台来个主动的限速降级,就不好了。

补充:设置开机自动启动的限速

用vim新建一个启动脚本文件

bash
vim /etc/systemd/system/set-tc-qdisc.service

内容如下:

ini
[Unit]
Description=Delayed TC Qdisc Setup for ens17 on TencentOS
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
# 延迟5秒执行,确保网络和网卡已经初始化
ExecStartPre=/bin/sleep 5

#设置限速4Mb/s,注意tc文件目录
ExecStart=/usr/sbin/tc qdisc add dev ens17 root tbf rate 4mbit burst 150kbit latency 50ms

StandardOutput=journal
StandardError=journal
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

立即启动一次(不重启,先测试)

bash
# 重新加载 systemd
sudo systemctl daemon-reload
#启动
sudo systemctl start set-tc-qdisc.service

查看规则生效后,设置开机启动

bash
sudo systemctl enable set-tc-qdisc.service