Linux – How to limit network usage for concrete application in linux that is running in it

bandwidth-controllinuxnetworking

I'm looking for something like nice for cpu, but for network usage that will limit application network consumption to level that will configure.

I have problems with xapian-replicate-server that is consuming 80 % of my network. It's causing mysql connections problem (mysql server is working on this machine too). I can't move xapian or mysql to other machine so i need to limit xapian network usage to a decent level.

Is there any tool that will help me do this ?

Best Answer

tc, iptables etc can all do this, but just to be different:

You can use Linux kernel feature cgroups and its net_cls module for limiting xapian-replicate-server. Something like this should do:

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

This would create a new cgroup for Xapian and give it total of 2048 kilobytes/s TCP traffic bandwidth and 4096 kilobytes/s of total whatever network traffic bandwidth.

Related Topic