nginx-0.1.13
Igor Sysoev
is at rambler-co.ru
Wed Dec 22 16:21:16 MSK 2004
On Tue, 21 Dec 2004, Михаил Монашёв wrote:
> Здравствуйте Игорь,
>
> IS> server_names_hash задаёт размер хэша, по умолчанию 1009. Если имён
> IS> не много, скажем, 500, то можно поставить что-то вроде 101. Для
> IS> размера лучше брать простые числа.
>
> Хорошо бы выдавать предупреждение, что чилосло не простое. Иначе толк
> от хэша будет нулевой в неумелых руках. И кстати почему для 500 нужно
> 101 задавать. Вроде ведь эффективное использование хэша, основанного
> на остатке от деления на простое число, происходит при заполенности
> хэша не более чем на 90%. Т.е. для 500 имён можно рекомендовать выбор
> первого простого числа большего 550, а лучше больше. Или я что-то
> неправильно понял? И кстати почему бы не вычислять этот параметр
> налету? Найти просто число большее чем X простым перебором совсем
> незатратно, если X скажем 30000. Или же просто выбирать это число из
> заранее просчитанного списка:
> если имён от 50 до 900, то 1009
> если от 901 до zzzz то yyyyy
>
> Это сильно упростит конфигурирование и избавит админа от выискивания
> простых чисел написанием маленьких программок. Да и не факт ещё, что
> хорошое правильное число найдётся. Ведь простые числа не все одинаково
> хорошо подходят для хэширования, если мне память не изменяет.
Программки уже написаны. На FreeBSD, например, простые числа добываются так:
/usr/games/primes 100 200
Хеш в данном случае используется не столько для того, чтобы сразу найти
нужное значение, сколько для того, чтобы существенно уменьшить число
сравнений. Для 500 имён хеш в 100 уменьшает число сравнений до примерно 5.
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list