Tengo un servidor muy cargado y nginx está consumiendo todo el ancho de banda disponible y no puedo conectarme al servidor mysql (ubicado en otra máquina) porque recibo errores como
Se perdió la conexión con el servidor MySQL en 'paquete de autorización de lectura'
Deseo configurar algún tipo de Calidad de Servicio para que el tráfico de MySQL siempre tenga prioridad y sus paquetes nunca se pierdan.
¿Existe algún método para hacer esto en centos 7/rhel?
Alternativamente, ¿existe alguna opción para limitar/configurar el tráfico del puerto 80 a, digamos, 900 Mbps?
Respuesta1
Puedes usar iptables y TC. Sería algo como esto:
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
El filtro es a partir de la dirección IP del host, para ti tendrás que adaptarte:
- las líneas de iptables con los puertos TCP de sus aplicaciones.
- y el ancho de banda de cada clase