server_names_hash_bucket_size
Задаёт размер хэш-ячейки для хранения имён серверов. — NGINX HTTP Core
Описание
Директива "server_names_hash_bucket_size" в NGINX управляет размером хэш-бакетов, используемых для хранения имён серверов в конфигурации. Когда задаётся несколько имён серверов, NGINX хеширует эти имена, чтобы повысить эффективность поиска и скорость сопоставления входящих запросов с определёнными server-блоками. Размер бакетов влияет на эффективность хэш-таблицы: меньшие размеры могут приводить к коллизиям, которые хэш-таблица должна разрешать, что потенциально сказывается на производительности. Директива особенно важна для конфигураций с большим количеством или длинными именами серверов, так как позволяет тонко настраивать потребление памяти и характеристики производительности. Параметр этой директивы задаётся в байтах, и значение, как правило, должно быть степенью двойки. Выбор подходящих значений зависит от конкретной нагрузки сервера и количества определённых имён серверов. В сценариях с большим количеством имён или особенно длинными именами увеличение размера бакета может помочь поддерживать эффективное разрешение хэшей, поскольку каждый бакет в идеале должен содержать меньше записей, чтобы минимизировать время поиска. Важно избегать чрезмерно больших значений, которые могут привести к пустой трате памяти, в зависимости от конфигурации и нагрузки сервера.
Пример конфига
http {
server_names_hash_bucket_size 64;
}Установка слишком низкого значения может привести к коллизиям хешей, что негативно скажется на производительности.
Использование значений, не являющихся степенью двойки, может привести к неоптимальному распределению по корзинам.