Назад | Перейти на главную страницу

Как зарезервировать пропускную способность для rsync?

В настоящее время nginx использует всю мою пропускную способность. Как мне оставить немного для rsync?

Это набросок, и вам нужно выяснить все детали самостоятельно, но вот как это должно быть возможно:

То, что вы хотите, может быть достигнуто с помощью двух специальных средств ядра Linux, а именно cgroups и QoS подсистема с ее политиками планирования.

Что вам в основном нужно, так это поместить nginx и его дочерние элементы в собственную cgroup, используйте discq планировщик из QoS, который затем может воздействовать на net_cls контроллер (см. этот документ RedHat это примерно описывает net_cls). Что он делает, так это добавляет тег к каждому пакету, который исходит из сокета, созданного с помощью PID, поступающего из контрольной группы, в которой находится nginx.

Вам, конечно, нужно создать такую ​​же настройку cgroup для rsync. Позаботьтесь о том, чтобы вы могли выполнить всю работу cgroups, прежде чем вызывать rsync или соответственно настраивать rsyncd.

Этот «тег», который прикрепляется из net_cls, затем может использоваться как classid в фильтре, прикрепленном к qdisc, для передачи трафика различным классам. Вам также необходимо определить классы пропускной способности, которые содержат ограничения пропускной способности, которые вы хотите назначить для своих двух контрольных групп, например, потолок 500 Мбит / с для nginx и 500 Мбит / с для rsync. Обратите внимание, что применяются обычные предостережения относительно QoS и ограничения скорости или постановки в очередь TCP.

Этот код будет ограничивать скорость порта 80 443 (HTTP, HTTPS) максимум до 0,5 МБ и пакетный до 0,6 МБ. Настройте / отрегулируйте в соответствии с вашими требованиями.

/sbin/tc qdisc add dev eth0 root handle 1: htb
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbps
/sbin/tc class add dev eth0 parent 1:1 classid 1:5 htb rate 512kbps ceil 640kbps prio 1
/sbin/tc class add dev eth0 parent 1:1 classid 1:6 htb rate 512kbps ceil 640kbps prio 0
/sbin/tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 5 fw flowid 1:5
/sbin/tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 6 fw flowid 1:6
/sbin/iptables -A OUTPUT -t mangle -p tcp --sport 80 -j MARK --set-mark 5
/sbin/iptables -A OUTPUT -t mangle -p tcp --sport 443 -j MARK --set-mark 6

Из http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/