QoS - CentOS / rhel での MySQL 帯域幅の優先順位

QoS - CentOS / rhel での MySQL 帯域幅の優先順位

負荷の高いサーバーがあり、nginxが利用可能な帯域幅をすべて消費しているため、次のようなエラーが発生し、mysqlサーバー(別のマシンにある)に接続できません。

「認証パケットの読み取り」時に MySQL サーバーへの接続が失われました

mysql トラフィックが常に優先され、パケットがドロップされないように、何らかの Quality of Service を設定したいと考えています。

Centos 7 / RHEL でこれを行う方法はありますか?

あるいは、ポート 80 のトラフィックを、たとえば 900 Mbps に制限/シェーピングするオプションはありますか?

答え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 アドレスからのものであり、次のように適応する必要があります:

  • アプリケーションの TCP ポートを含む iptables 行。
  • 各クラスの帯域幅

関連情報