Кеширован��е: размер и количество в настро��ках буфер��в
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