Re: помогите понять логику кеширования и буферизации

Maxim Dounin mdounin at mdounin.ru
Wed Jan 30 17:30:40 UTC 2013


Hello!

On Wed, Jan 30, 2013 at 05:51:25AM -0500, teo wrote:

[...]

> ... и максимальном кол-ве запросов на одном IPv4 в 65536 ...

Безотносительно к остальному тексту - вот это вот достаточно 
частно встречающееся заблуждение, поэтому слегка потопчусь, дабы 
развеять/прояснить.

Нет ограничения в 64k соединений на адрес.  Есть ограничение 
уникальность комбинации src_ip:src_port:dst_ip:dst_port.  И из него 
следует, что при фиксированных dst_ip, dst_port (т.е. ip сервера, 
и порт 80) - остаётся два свободных параметра, src_ip и src_port.

Если мы зафиксируем вдобавок ещё и src_ip - то, действительно, у 
нас останется для варьирования только src_port, и больше 64k 
соединенией никак не открыть.  Но - это так только при 
фиксированном src_ip, т.е. от _одного_ клиента.

Если же клиентов много (а у типичного веб-сервера их много) - то 
соединений может быть сколько угодно (до 64k от каждого клиента).

Об ограничении в 64k соединений в основном имеет смысл говорить при 
проксировании между одним фронтендом и одним бекендом.  Это как раз тот 
случай, когда src_ip - фиксирован.  Но это - совсем отдельный 
случай, хотя и важный.  И ограничение в 64k соединений в этом 
случае - легко обходится как добавлением ip-адресов бекенду, так и 
фронтенду.

[...]

> > В этом же треде мне недавно доказывали обратное:
> 
> А к чему вы тогда склоняетесь? К тому что написано в документации, или к
> тому, что кто-то сказал в треде?
> Я бы игнорировал замечания в треде, если они противоречат документации.
> И заблуждению что keys_zone ограничивает максимальное кол-во ключей
> вобщем-то даже объяснимо, т.к. действительно есть другие параметры, где
> указанный размер косвенное ограничивает число ключей, хотя сначала все равно
> фактический размер памяти.

Самокритично.  :)

Документации (и реальности) противотиворечит ваше утверждение, что 
размер кеша на диске ограничивается параметром keys_zone.

Параметр keys_zone - не ограничивает размер кеша (на диске), он 
определяет размер области разделяемой памяти, которая отводится 
для хранения ключей (и соответственно косвенно определяет 
максимально возможное число ключей к кеше).

http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_path

-- 
Maxim Dounin
http://nginx.com/support.html



Подробная информация о списке рассылки nginx-ru