nixp.ru v3.0

19 октября 2017,
четверг,
19:31:00 MSK

DevOps с компанией «Флант»
Longobard написал 11 мая 2004 года в 19:21 (520 просмотров) Ведет себя как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.

Пишу сейчас свой веб-сервер :) Тут мне админ знакомый подкинул идею сделать квоты трафа и ограничение полоы пропускания для каждого виртуального хоста. С первым я уже разобрался, а вот со вторым… Короче требуется установаить для сокеты определенную скорость. Например хочу чтобы максимальная скорость прокачки через сокеты была 40 Мбит/с. Как это сделать? Я пробовал играться с размерами буферов — но результат очень зависит от загруженности системы. Вариант что например отправлять по таймеру кусками данные — не годится. Требуется чтобы все данные были отправлены за одну процедуру записи в сокет. Короче как это сделать? Какие у вас есть мысли? Я перекопал маны, Стивенса, гугль. Ничего не нашел. Но это точно можно, ведь есть же ФТП-сервера, которые льют файло с четко определенной скоростью. Короче помогите чем сможете, заранее спасибо.

Тут идея в том, что можно ограничивать скорость только исходящего трафика. Тогда я бы сделал так: завел бы семафор, и делал бы SEMWAIT при каждой попытке записи буфера в опеределенное число байт. Потом задал бы таймер реального времени, и в обработчике сигнала таймера освобождал бы семафор. Не понимаю, почему проблема с одной процедурой записи? Тот же apache, как правило, возвращает ответ в виде нескольких пакетов, и ничего…

anonymous
LONGOBARD
Пишу сейчас свой веб-сервер :) Тут мне админ знакомый подкинул идею сделать квоты трафа и ограничение полоы пропускания для каждого виртуального хоста. С первым я уже разобрался, а вот со вторым… Короче требуется установаить для сокеты определенную скорость. Например хочу чтобы максимальная скорость прокачки через сокеты была 40 Мбит/с. Как это сделать? Я пробовал играться с размерами буферов — но результат очень зависит от загруженности системы. Вариант что например отправлять по таймеру кусками данные — не годится. Требуется чтобы все данные были отправлены за одну процедуру записи в сокет. Короче как это сделать? Какие у вас есть мысли? Я перекопал маны, Стивенса, гугль. Ничего не нашел. Но это точно можно, ведь есть же ФТП-сервера, которые льют файло с четко определенной скоростью. Короче помогите чем сможете, заранее спасибо.

А ты проверял, что скорость отдачи контента с этих ftp-серверов для каждого виртуального хоста разная, или же все-таки одна для всех ? Во втором случае решение более чем очевидно.