view xml/ru/docs/hash.xml @ 1352:dbb618f60a54

Elaborate on writing proxied responses to files. Added a note that restrictions imposed by proxy_max_temp_file_size, proxy_temp_file_write_size and Co. do not apply to responses that will be cached or saved on disk.
author Ruslan Ermilov <ru@nginx.com>
date Tue, 11 Nov 2014 17:31:37 +0300
parents 764fbac1b8b4
children
line wrap: on
line source

<!--
  Copyright (C) Igor Sysoev
  Copyright (C) Nginx, Inc.
  -->

<!DOCTYPE article SYSTEM "../../../dtd/article.dtd">

<article name="Настройка хэшей"
         link="/ru/docs/hash.html"
         lang="ru"
         rev="1">

<section>

<para>
Для быстрой обработки статических наборов данных, таких как имена серверов,
значения директивы <link doc="http/ngx_http_map_module.xml" id="map"/>,
MIME-типы, имена полей заголовков запросов,
nginx использует хэш-таблицы.
Во время старта и при каждой переконфигурации nginx подбирает минимально
возможный размер хэш-таблиц с учётом того, чтобы размер корзины,
куда попадают ключи с совпадающими хэш-значениями,
не превышал заданного параметра (hash bucket size).
Размер таблицы считается в корзинах.
Подбор ведётся до тех пор, пока размер таблицы не превысит параметр
hash max size.
Для большинства хэшей есть директивы, которые позволяют менять эти параметры,
например, для хэшей имён серверов директивы называются
<link doc="http/ngx_http_core_module.xml" id="server_names_hash_max_size"/>
и <link doc="http/ngx_http_core_module.xml" id="server_names_hash_bucket_size"/>.
</para>

<para>
Параметр hash bucket size всегда выравнивается до размера, кратного
размеру строки кэша процессора. Это позволяет ускорить поиск ключа
в хэше на современных процессорах, уменьшив число обращений к памяти.
Если hash bucket size равен размеру одной строки кэша процессора,
то во время поиска ключа число обращений к памяти в худшем случае
будет равно двум&mdash;первый раз для определения адреса корзины,
а второй&mdash;при поиске ключа внутри корзины.
Соответственно, если nginx выдал сообщение о необходимости увеличить
hash max size или hash bucket size, то сначала нужно увеличивать первый
параметр.
</para>

</section>

</article>