Как ограничить использование сети для конкретного приложения в Linux, которое в нем работает?

Я ищу что-то вроде хорошего для процессора, но для использования сети, которое ограничит потребление сети приложением до уровня, который будет настраиваться.

У меня проблемы с xapian-replicate-server, который потребляет 80 % моей сети. Это вызывает проблему с подключением mysql (на этой машине работает и сервер mysql). Я не могу переместить xapian или mysql на другую машину, поэтому мне нужно ограничить использование сети xapian до достойного уровня.

Есть ли инструмент, который поможет мне сделать это?

2 ответа

Решение

tc, iptables и т.д. все могут сделать это, но просто чтобы быть другим:

Вы можете использовать функцию ядра Linux cgroups И его net_cls модуль для ограничения xapian-replicate-server. Нечто подобное должно сделать:

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

Это создаст новую группу для Xapian и даст ей общую пропускную способность TCP-трафика 2048 килобайт / с и общую пропускную способность 4096 килобайт / с независимо от пропускной способности сетевого трафика.

Похоже, "струйка" может работать на вас: http://monkey.org/~marius/trickle/

Другие вопросы по тегам