server_names_hash_max_size
Директива 'server_names_hash_max_size' задаёт максимальный размер таблицы хешей, используемой для хранения имён серверов в NGINX. — NGINX HTTP Core
Описание
Директива 'server_names_hash_max_size' в NGINX используется для указания максимального размера таблицы хешей, которая хранит имена серверов. Это важный параметр, поскольку NGINX полагается на хеширование имён серверов для эффективной маршрутизации входящих запросов в соответствующий серверный блок. Когда количество имён серверов превышает этот предел, механизм хеширования может стать менее эффективным, что может привести к ухудшению производительности при обработке запросов. При настройке этой директивы учитывайте, что если количество указанных имён серверов превышает заданный 'server_names_hash_max_size', NGINX автоматически увеличит размер таблицы хешей, что может привести к увеличению использования памяти. Также важно отметить, что хотя эта директива определяет максимальный размер таблицы хешей, фактический размер, используемый NGINX во время работы, может варьироваться в зависимости от числа имён серверов и особенностей алгоритма хеширования. Правильная настройка этого значения может помочь обеспечить оптимальную производительность NGINX, особенно в средах с большим количеством виртуальных хостов или сложными конфигурациями. Эта директива может использоваться в контексте 'http' в конфигурационных файлах NGINX и будет влиять на все серверные блоки в пределах заданной области. Для администраторов, ответственных за сайты с высоким трафиком или имеющих большое количество конфигураций серверов, внимательное рассмотрение этой директивы может минимизировать накладные расходы на поиск при обработке запросов.
Пример конфига
http {
server_names_hash_max_size 1024;
}Установка слишком низкого значения может привести к коллизиям server name и к снижению производительности из-за чрезмерной memory reallocation.
Server names должны быть определены до использования этой directive, чтобы hash table имела правильный размер.