Как ограничить использование сети для конкретного приложения в 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/