我有一个高负载的服务器,nginx 占用了所有可用带宽,我无法连接到 mysql 服务器(位于另一台机器上),因为我收到如下错误
在“读取授权包”时与 MySQL 服务器失去连接
我希望设置某种服务质量,以便 mysql 流量始终具有优先级并且其数据包永远不会被丢弃。
有没有方法可以在 centos 7 / rhel 中做到这一点?
或者,是否有任何选项可以限制/调整端口 80 的流量到比如说 900Mbps?
答案1
您可以使用 iptables 和 TC。它将会像这样:
iptables -t mangle -A FORWARD ! -s 192.168.xxx.0/24 -d 192.168.xxx.xxx -j MARK --set-mark 1
tc qdisc add dev <eth> root handle 1: cbq bandwidth 100Mbit avpkt 1000 mpu 64
tc class add dev <eth> parent 1:0 classid 1:1 cbq rate 3200Kbit allot 1514 prio 1 avpkt 1000 bounded
tc filter add dev <eth> parent 1:0 protocol ip handle 1 fw flowid 1:1
该过滤器来自主机的 IP 地址,您必须进行调整:
- iptables 行与您的应用程序的 TCP 端口相匹配。
- 以及每个类别的带宽