Значение параметров в config

Igor Sysoev is at rambler-co.ru
Fri Nov 26 22:39:18 MSK 2004


On Fri, 26 Nov 2004, Konstantin N. Bezruchenko wrote:

> Из документации на сайте непонятно или не полностью понятно значение
> некоторых директив в конфиге. В частности этих:
>
> connection_pool_size         256;

Изначальный размер пула соединения. Пул - это такая память, из которой
выделяются блоки памяти, а освобожаются все вместе при разрушении пула.
Пулы в nginx похожи на пулы в Apache с той разницей, что в nginx блоки
больше одной страницы (4K на x86) всегда выделяются не из самого пула,
а malloc()ом, но они остаются привязаны к пулу. Кроме того, такие блоки
можно освобожать до разрушения пула. Например, ngx_http_gzip_module
сразу после завершения сжатия освобожает память, которую использовал zlib.

В данном случае размер пула 256 байт. Куски до примерно ~250 будут выделятся
из пула, всё что больше - malloc(). Когда пул заканчивается, выделяется
ещё 256 байт и так далее.

> client_header_buffer_size    1k;

Буфер для чтения заголовка запроса клиента. 1K вполне достаточно. Однако
некоторые телефоны с wap'ом шлют немерянные заголовки, в которых одна строка
может быть в полтора килобайта. Специально для таких запросов сделаны

> large_client_header_buffers  4 2k;

В данном случае выделяется до 4 буферов размером 2K.

> request_pool_size            4k;

Пул запроса. Живёт только на время обработки запроса. В keep-alive
используется пул соединения.

> output_buffers   1 32k;
> Что в данном случае значит число '1'?

Один буфер размером в 32K. output_buffers используются, если файл нужно
читать с диска, например, когда не используется sendfile или ответ нужно сжать
или перекодировать.

> postpone_output  1460;

Фрагменты ответов размером до 1460 байт не будут передаваться в ядро.
Уменьшает число мелких пакетов.

> send_lowat       12000;

Ядро будет сообщать о готовности сокета к записи, если в ядерном буфере
свободно не менее 12000 байт. Уменьшает число переключений из ядра в nginx.
С этим параметором нужно быть осторожным - например, под FreeBSD он не
должен быть больше, чем sysctl net.inet.tcp.sendspace. На старте под
FreeBSD nginx сообщает, если send_lowat больше, но этот sysctl можно
менять в процессе работы.

> keepalive_timeout  75 20;
> Что в данном случае значит '75'?

Первое число - время, в течение которого nginx держит keep-alive соединение.
0 запрещает keep-alive.
Второе число - время, передаваемое в заголовке "Keep-Alive: timeout=<###>".
Второго параметра может и не быть. Кроме того, эти параметры могут быть
разными.

Заголовок "Keep-Alive" понимает Mozilla и Konqueror.
MSIE закрывает соединение примерно через минуту. Opera держит очень долго.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list