Ограничение сетевого трафика для приложений

четверг, 9 апреля 2009 г.
$ sudo apt-get install trickle

Эта замечательная легковесная утилита позволяет ограничить пропускную способность для отдельного приложения, работающего с сокетами. Она не дает точных результатов, и скорость передачи данных может немного отклоняться от требуемой. Но ведь эта утилита и не предназначена для того, чтобы деньги считать. Так что, по моему мнению, программа справляется с поставленной задачей просто отлично.

Загрузим страничку mail.ru. Но поскольку она очень большая и тяжелая, ограничим скорость закачки до 2 КБ/сек, чтобы не перегружать наш драгоценный канал.

$ trickle -d 2 wget mail.ru
trickle: Could not reach trickled, working independently: No such file or directory
--14:40:28-- http://mail.ru/
=> `index.html.5'
Распознаётся mail.ru... 194.67.57.226, 194.67.57.26, 194.67.57.126
Устанавливается соединение с mail.ru|194.67.57.226|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: нет информации [text/html]
[ <=> ] 24 576 2.00K/s

И, как говорится, вперед!!!

Трикл имеет два наиболее интересных параметра:
-d - скорость закачки в килобайтах в секунду
и
-u - скорость откачки в тех же единицах измерения.
Список остальных параметров доступен в мане.

Обратите внимания на первую строку вывода команды: "trickle: Could not reach trickled, working independently: No such file or directory". Похоже на сообщение об ошибке, но это просто сообщение о том, каким образом будет работать трикл :-) Дело в том, что он может работать в двух режимах: независимо и через демон. Демон удобен в том случае, если вам нужно ограничить суммарный трафик для нескольких приложениях. Запускаем демона с указанием параметров ограничения

$ trickled -d 5

И теперь каждый экземпляр trickle будет подключаться к демону, при этом указывать пропускную способность больше не нужно. Как остановить демон в мануале не написано. Поэтому я это делаю посредством killall trickled.

По умолчанию утилита trickle общается с демоном trickled через сокет "/tmp/.trickled.sock". Если вам нужно запустить второго демона и направить на него другие экземпляры trickle, используйте параметр -n с указанием другого имени файла сокета.

$ trickled -d 1 -n /tmp/.trickled_1.sock
$ trickle -n /tmp/.trickled_1.sock wget rambler.ru

Хочу еще напоследок обратить ваше внимание на работу с прокси-серверами. Если вы собираетесь закачивать большой файл через прокси, то trickle будет ограничивать скорость только между вами и прокси-сервером. Сам же прокси может закачать весь файл с максимально возможной скоростью и терпеливо ждать, когда вы его заберете себе. Таким образом, при закачке одного большого файла прокси может усугубить всю малину и лишить использование шейпера всякого смысла. Однако, при закачке множества мелких файлов вы по крайней мере ограничите частоту их запросов.

0 коммент.:

Отправить комментарий