Кеширован��е: размер и количество в настро��ках буфер��в

Maxim Dounin mdounin at mdounin.ru
Wed Oct 21 19:58:02 MSD 2009


Hello!

On Wed, Oct 21, 2009 at 11:02:56AM -0400, skinc wrote:

> Собственно, задался вопросом как влияет количество и размер буферов в nginx на его производительность и влияет ли вообще при условии одинакового значения выделяемой ими памяти (количество*размер)... Гугл и список рассылки внятного ответа не дал.
> Как видно из документации, дефолтовые значения размера выбираются равными странице памяти для используемой ОС:
> 
> [*] http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_buffer_size
> [*] http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_buffers
> [*] http://sysoev.ru/nginx/docs/http/ngx_http_gzip_module.html#gzip_buffers
> [*] http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#large_client_header_buffers
> 
> в то время, как в рассылке часто попадается пример с "proxy_buffers 16 32k;"...
> А в чем разница? По какой причине, например, для ОС с размером страницы в 4к, дефолтно в proxy_buffers используется 8 буферов по 4к, а не 4 по 8к или 2 по 16к?
> Собственно, что лучше "proxy_buffers 8 32k;" или "proxy_buffers 64 4k;"? И почему?

Ответа на этот вопрос не существует.  Всё зависит от задачи.

1. Много маленьких буферов означает, что память будет 
расходываться экономнее.  Скажем, для ответа размером 5k в первом 
случае будет выделено 32k, во втором - 8k.

2. Большие буфера требуют чуть-чуть меньше процессора на их 
обработку и с меньшей вероятностью приводят к неполным ip-пакетам 
уходящим в сеть.

3. Если где-то по дороге возникает общение с диском (типичный 
случай - раздача больших файлов и настройка output_buffers, 
proxy_buffers будет влиять на буферизацию на диск/запись в кеш), 
то большие буфера позволяют уменьшить количество seek'ов, что 
существенно сказывается на производительности.

Решайте что именно для вас важнее/во что вы упираетесь, и 
настраивайте соответственно.

Maxim Dounin





More information about the nginx-ru mailing list