我有一個高負載的伺服器,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 連接埠一致。
- 以及每個類別的頻寬