Re: limit rate и высокие скорости
Maxim Dounin
mdounin на mdounin.ru
Пт Июн 26 16:31:52 UTC 2020
Hello!
On Thu, Jun 25, 2020 at 03:52:47PM -0400, edo1 wrote:
> > https://trac.nginx.org/nginx/ticket/1678#comment:1
>
> читал
>
> > Подкрутить можно размеры буферов и/или включить sendfile,
>
> размеры крутил (без них было сильно хуже), sendfile тоже пробовал включать
> (точнее отключать aio).
>
> с "output_buffers 2 10m" получается около 80Мб/с, но 20Мб на клиента как-то
> перебор (и опять же это не ровно 100, как в указано через limit_rate)
Ну так и гигабит на клиента - это немало.
Там достаточно простой алгоритм, для ограничения мгновенной
скорости считающий время, положенное на отправку конкретного
набора буферов. И если погрешности вычислений велики - результат
оказывается, скажем так, не идеальным.
При скорости в 100 мегабайт в секунду - характерным размером будет
102 килобайта, объём данных, отправляемый за 1 миллисекунду.
Суммарный размер буферов меньше - мгновенная скорость
ограничиваться не будет. А если больше - то будет, и при типичном
значении CONFIG_HZ=250 задержки в 1 миллисекунду будут
превращаться в 4 миллисекунды, то есть скорость имеет все шансы
оказаться в четыре раза меньше заданной (а если CONFIG_HZ вдруг
меньше, как в тикете по ссылке - то будет и того хуже).
Погрешность процентов в 10 получим где-то ближе к 4 мегабайтам
буферов суммарно, но тут уже скорее всего будут другие
ограничивающие факторы - как то особенности шедулинга, размеры
буферов сокетов и другие задержки в ходе обработки.
Пытаться с этим бороться и напрограммировать алгоритм, не
подверженный ошибкам при "плохих" размерах буферов - можно, но
смысла в этом не очень много, так как для ограничений в гигабиты
limit_rate обычно не используют, AFAIK.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru