server_names_hash_bucket_size

Задаёт размер хэш-ячейки для хранения имён серверов. — NGINX HTTP Core

server_names_hash_bucket_size
http
Синтаксисserver_names_hash_bucket_size size;
По умолчанию32
Контекстhttp
МодульNGINX HTTP Core
Аргументы1

Описание

Директива "server_names_hash_bucket_size" в NGINX управляет размером хэш-бакетов, используемых для хранения имён серверов в конфигурации. Когда задаётся несколько имён серверов, NGINX хеширует эти имена, чтобы повысить эффективность поиска и скорость сопоставления входящих запросов с определёнными server-блоками. Размер бакетов влияет на эффективность хэш-таблицы: меньшие размеры могут приводить к коллизиям, которые хэш-таблица должна разрешать, что потенциально сказывается на производительности. Директива особенно важна для конфигураций с большим количеством или длинными именами серверов, так как позволяет тонко настраивать потребление памяти и характеристики производительности. Параметр этой директивы задаётся в байтах, и значение, как правило, должно быть степенью двойки. Выбор подходящих значений зависит от конкретной нагрузки сервера и количества определённых имён серверов. В сценариях с большим количеством имён или особенно длинными именами увеличение размера бакета может помочь поддерживать эффективное разрешение хэшей, поскольку каждый бакет в идеале должен содержать меньше записей, чтобы минимизировать время поиска. Важно избегать чрезмерно больших значений, которые могут привести к пустой трате памяти, в зависимости от конфигурации и нагрузки сервера.

Пример конфига

http {
    server_names_hash_bucket_size 64;
}

Установка слишком низкого значения может привести к коллизиям хешей, что негативно скажется на производительности.

Использование значений, не являющихся степенью двойки, может привести к неоптимальному распределению по корзинам.