IMAP является другим протоколом и использует различные порты, чем HTTP. Стандартные порты для IMAP равняются 143 и 993 для безопасного IMAP.
Если у Вас есть проблемы при соединении, я подозреваю, что брандмауэр/маршрутизатор блокирует порт (порты) IMAP.
Документация здесь имеет объяснение, которое походит на то, что Вы хотите знать:
Директива указывает зону (зона) и максимальные возможные пакеты запросов (пакет). Если уровень превышает спрос, обрисованный в общих чертах в зоне, запрос отложен, так, чтобы запросы были обработаны в заданной скорости
Из того, что я понимаю, запросы по пакету будут отложены (займите больше времени и ожидайте, пока они не могут быть поданы), с nodelay
опции задержка не используется и избыточные запросы, отклонены с 503 ошибками.
Это сообщение в блоге (archive.org) дает хорошее объяснение, как ограничение уровня работает над nginx:
Если Вы похожи на меня, Вы, вероятно, задаетесь вопросом, какого черта разорванный действительно означает. Вот прием: замените слово 'пакет' 'блоком' и предположите, что каждому пользователю дают блок с 5 маркерами. Каждый раз, когда они превышают уровень 1 запроса в секунду, они должны заплатить маркер. После того как они потратили все свои маркеры, им дают сообщение об ошибке HTTP 503, которое по существу стало стандартом для, ‘отступают, человек!’.
Я не понял, что в первый раз, когда я читал введение от [1 131] https://www.nginx.com/blog/rate-limiting-nginx / .
Теперь я уверен, что понимаю, и мой ответ является до сих пор лучшим. :)
предположим: 10r/s
установлен, макс. возможность сервера, например, 10000r/s
, который является 10r/ms
и в данный момент существует только 1 клиент.
, Таким образом, вот основное различие между 10r/s per IP burst=40 nodelay
и 10r/s per IP burst=40
.
Как https://www.nginx.com/blog/rate-limiting-nginx / зарегистрированный ( я настоятельно рекомендую читать статью сначала (кроме раздел Two-Stage Rate Limiting)), это поведение решает одну проблему. Какой?:
В нашем примере, 20-й пакет в очереди ожидает 2 секунды, которые будут переданы, в которой точке ответ на него больше не мог бы быть полезен для клиента.
Проверка проект, который я сделал, эти 40th
запрос, получает ответ в 1s
, в то время как другой 40th
получает ответ в 4s
.
Это может лучше всего использовать возможность сервера: передает обратно ответы, максимально быстрые, все еще сохраняя x r/s
ограничение данному клиенту/IP.
, Но там также стоится здесь. Стоимость будет:
, Если у Вас есть многие клиенты, ставящие в очередь на сервере скажем, клиент A
, B
и C
.
Без [1 113], запросы подаются в порядке, подобном [1 114].
С [1 115], порядок, более вероятно, будет AAABBBCCC
.
я хотел бы подвести итог статьи https://www.nginx.com/blog/rate-limiting-nginx / здесь.
, Прежде всего, самая важная конфигурация x r/s
.
x r/s
только, избыточные запросы сразу отклоняются.
x r/s
+ burst
, избыточные запросы ставятся в очередь.
1.
по сравнению с [1 122], стоимость - то, что на стороне клиента, запросы с очередями поднимают возможности позже reuqests, который будет иметь шанс того, чтобы быть подаваемым.
, Например, 10r/s burst=20
по сравнению с [1 124], эти 11th
запрос, как предполагается, сразу отклоняется при последнем условии, но теперь это ставится в очередь и будет подаваться. Эти 11th
запрос поднимает 21th
шанс запроса.
x r/s
+ burst
+ nodelay
, уже объяснил. P.S. раздел Two-Stage Rate Limiting статьи очень сбивает с толку. Я не понимаю, но это, кажется, не имеет значения.
, Например:
С этой конфигурацией на месте, клиент, который делает непрерывный поток запросов в 8 r/s, испытывает следующее поведение.
8 r/s? серьезно? Существует 17 запросов в течение 3 секунд, показанных в изображении, 17 / 3 = 8?
Я вижу это следующим образом:
Запросы будут обрабатываться как можно быстрее, пока не будет превышена скорость зоны. Скорость зоны "средняя", поэтому, если ваша скорость 1r / s
и пакетная 10
, вы можете получить 10 запросов в 10-секундном окне.
После того, как скорость зоны будет превышено:
a. Без nodelay
дальнейшие запросы вплоть до пакета
будут задерживаться.
b. С nodelay
дальнейшие запросы вплоть до пакета
будут обслуживаться как можно быстрее.
После превышения пакета
сервер будет возвращать ответ с ошибкой до тех пор, пока окно всплеска истекает например для скорости 1 об / с
и пакета 10
клиенту нужно будет ждать до 10 секунд следующего принятого запроса.
Ntọala ahụ na-akọwa ma arịrịọ ga-egbu oge ka ha kwekọọ na ọnụego achọrọ ma ọ bụ na a ga-ajụ ha naanị ... ma ọ bụrụ na ọnụọgụ ahụ na-ejedebe ọnụego ahụ ma ọ bụ ibu ọrụ gafere onye ahịa.
nodelay
ugbu a A ga-edozi arịrịọ ngwa ngwa o kwere mee; a ga-ajụ arịrịọ ọ bụla ezitere na njedebe a kapịrị ọnụ site na koodu edobere dị ka limit_req_status
nodelay
abiaghi (aka egbu oge) A ga-edozi arịrịọ na ọnụego dabara na oke a kapịrị ọnụ. Ya mere, dịka ọmụmaatụ ma ọ bụrụ na e setịpụrụ ọnụego 10 req / s, arịrịọ ọ bụla ga - edozi na> = .1 (1 / ọnụego) sekọnd, si otú a na-agaghị ekwe ka ọnụego gafere, mana ikwe ka arịrịọ ahụ kwadoo. Ọ bụrụ na arịrịọ zuru ezu iji laghachi na bọket ahụ (nke ga-egbochi njedebe njikọta otu oge), mgbe ahụ a ga-ajụ ha yana koodu edobere dị ka limit_req_status
.
The gory details are here: https://github.com/nginx/nginx/blob/master/src/http/modules/ngx_http_limit_req_module.c#L263
ebe ezi uche dị na ya mgbe njedebe na-agafebeghị ma ugbu a, igbu oge ga-etinye aka na arịrịọ ahụ. Ngwa nke nodelay
ọ kachasị site na ntuziaka na-abata ebe a: https://github.com/nginx/nginx/blob/master/src/http/modules/ngx_http_limit_req_module.c # L495
na-akpata uru nke igbu oge
n'elu ka ọ bụrụ 0 na-akpalite onye nchịkwa ahụ ka ọ laghachi ozugbo a ga-ahazigharị ya ọzọ).
TL; DR: Параметр nodelay полезен, если вы хотите установить ограничение скорости, не ограничивая допустимый интервал между запросами.
Мне было трудно переваривать другие ответы , а затем я обнаружил новую документацию от Nginx с примерами ответов на этот вопрос: https://www.nginx.com/blog/rate-limiting-nginx/
Вот подходящая часть. Дано:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
location /login/ {
limit_req zone=mylimit burst=20;
...
}
Параметр пакета определяет, сколько запросов клиент может сделать в превышение нормы, заданной зоной (с нашей выборкой mylimit зона, ограничение скорости составляет 10 запросов в секунду или 1 на каждые 100 миллисекунды). Запрос, поступивший раньше, чем через 100 миллисекунд. после того, как предыдущий помещается в очередь, и здесь мы устанавливаем размер очереди равен 20.
Это означает, что с заданного IP-адреса поступает 21 запрос. одновременно NGINX перенаправляет первый на вышестоящий сервер группа немедленно и ставит оставшиеся 20 в очередь. Тогда это пересылает запрос из очереди каждые 100 миллисекунд и возвращает 503 в клиент только если входящий запрос делает количество поставленных в очередь запросов превышает 20.
Если вы добавляете nodelay:
location /login/ {
limit_req zone=mylimit burst=20 nodelay;
...
}
С параметром nodelay, NGINX по-прежнему выделяет слоты в очереди. в соответствии с параметром пакета и устанавливает настроенную скорость ограничение, но не за счет пересылки запросов в очереди. Вместо этого, когда запрос приходит «слишком рано», NGINX пересылает его. немедленно, пока в очереди есть доступный слот. Он помечает этот слот как «занятый» и не освобождает его для использования другим запрос, пока не пройдет соответствующее время (в нашем примере после 100 миллисекунд).