
У меня сильно загруженный сервер, и nginx использует всю доступную пропускную способность, и я не могу подключиться к серверу MySQL (расположенному на другой машине), так как получаю ошибки типа
Потеряно соединение с сервером MySQL при «чтении пакета авторизации»
Я хочу настроить своего рода качество обслуживания, чтобы трафик MySQL всегда имел приоритет и его пакеты никогда не терялись.
Есть ли способ сделать это в Centos 7 / Rhel?
Или есть ли возможность ограничить/формировать трафик порта 80, скажем, до 900 Мбит/с?
решение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-портами ваших приложений.
- и пропускная способность каждого класса