Pregunta ¿Cómo limitar el uso de la red para una aplicación concreta en Linux que se ejecuta en ella?


Estoy buscando algo bueno para la CPU, pero para el uso de la red que limitará el consumo de la red de la aplicación al nivel que configurará.

Tengo problemas con el servidor xapian-replicate que consume el 80% de mi red. Está causando problemas con las conexiones de mysql (el servidor mysql también está trabajando en esta máquina). No puedo mover xapian o mysql a otra máquina, así que necesito limitar el uso de la red xapian a un nivel decente.

¿Hay alguna herramienta que me ayude a hacer esto?


5
2018-04-24 10:37


origen


La mayoría de los switches administrados (incluso los de bajo costo) cuentan con QoS para que pueda priorizar el tráfico. - gravyface
Este es un ejemplo antiguo con iproute e iptables (es posible que ya tenga netfilter pero debería ser similar): lartc.org/howto/lartc.cookbook.fullnat.intro.html - ott--
Pero, ¿netfilter == iptables? - Kyle Smith


Respuestas:


tc, iptables Todos pueden hacer esto, pero solo para ser diferentes:

Puedes usar la característica del kernel de Linux cgroups y es net_cls Módulo para limitar el servidor xapian-replicate. Algo como esto debería hacer:

mount -t cgroup -onet net /sys/fs/cgroup
cd /sys/fs/cgroup
mkdir xapian-replicate-server
/bin/echo $$ > xapian-replicate-server/tasks
/bin/echo 2048 > xapian-replicate-server/net.tcp
/bin/echo 4096 > xapian-replicate-server/net.tot
however_you_launch_xapian-replicate-server

Esto crearía un nuevo cgroup para Xapian y le daría un total de 2048 kilobytes / s de ancho de banda de tráfico TCP y 4096 kilobytes / s de cualquier ancho de banda de tráfico de red.


7
2018-04-24 11:03



Deberías montar el cgroup sistema de archivos bajo /sys/fs/cgroup/net_cls Si su distribución aún no lo hace. - Sam Morris
@Sam Morris: ¡Ups! Arreglado mi comentario :) - Janne Pikkarainen
Este cgroup ya no funciona de esa manera. Debe agregar una serie de qdisc, clases y filtros y luego marcar la clase a la que desea que ingrese el tráfico de cgroups net_cls.classid - Matthew Ife


Parece que "goteo" podría funcionar para usted: http://monkey.org/~marius/trickle/


2
2018-04-24 10:55