QoS - CentOS / rhel 上的 MySQL 带宽优先级

QoS - CentOS / rhel 上的 MySQL 带宽优先级

我有一个高负载的服务器,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 端口相匹配。
  • 以及每个类别的带宽

相关内容