![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ограничение скорости [D6, Win95/98, Win2k, WinXP]
FireMan_Alexey © (2009-02-08 10:29:00)Ув. Мастера!
Есть задача ограничения скорости у моего сервера.
Я реализовал алгоритм замедления, через непосредственную задержку чтения данных из гнезда.
Сталкнулся с такой проблемой:
Изначально реализовывал задержку из расчета
(МАКС скорость)/(Кол-во соединений), но выходит, что есть соединения которые почти ничего не передают, а есть те которым необходимо передавать большое кол-во данных.
Вот вопрос есть ли алгоритм распределения скоростей или какая-нибудь идея, как это реализовать?
Буду благодарен любой подсказке, ссылке, примеру :)
Заранее спасибо!
Anatoly Podgoretsky (2009-02-09 11:18:00) [1]
> (МАКС скорость)/(Кол-во соединений),
Есть просто не использовать скорость, а только МАКС скорость соединения для потока, можно адаптивно для каждого по своему.
> Только понимаеш у меня не одно соединение с сервером от
> одного клиента, а N - штук. :)
А это разве что то меняет? Или расчитывает это для каждого соединения индивидуально, или как усредненая для всех соединений.
Сергей М. (2009-02-09 09:51:00) [2]
> есть ли алгоритм распределения скоростей или какая-нибудь
> идея, как это реализовать?
По-хорошему, это задача не прикладного сервера, а шейперав составе, например, автономного роутера.
Не знаю насколько это тебе поможет:
http://www.x-drivers.ru/articles/manuals/12/1.html
FireMan_Alexey (2009-02-09 09:35:00) [3]Только понимаеш у меня не одно соединение с сервером от одного клиента, а N - штук. :)
Eraser (2009-02-08 16:14:00) [4]> [0] FireMan_Alexey © (08.02.09 10:29)
нужно ограничить скорость по каждому соединению. для этого не обязательно при каждой операции чтения/записи вставлять задержки. достаточно примерно раз в секунду проверять сколько данных передано и за какое время, на основе этих данных высчитывать скорость. если скорость больше положенной, то раз в секунду вставлять sleep с задержкой, котороую тоже легко вычислить.