очень много клиентов

Igor Sysoev is at rambler-co.ru
Fri Feb 17 13:32:52 MSK 2006


On Fri, 17 Feb 2006, Alexey Popov wrote:

> Igor Sysoev пишет:
>>>     map  ... {
>>>>         include  /var/www/block.domain.ru;
>>>>     }
>>> У меня в подобном мапе получается 500000 строк, размер файла 30Мб.
>>> Каждый процесс nginx'а кушает после загрузки ~80M.
>>> В Апаче mod_vhost_alias использует этот мап в виде внешнего NDBM-файла.
>>> Можно ли оценить эффективность nginx'a в такой позе по сравнению с Апачем? 
>>> Контент не полностью статика, часть придется проксировать на Апач.
>> Эти 80М полностью разделяется между процессами.
>> 
>> Если рабочие процессы не свопятся и в map описаны имена без wildcards,
>> то для поиска соответсвия требуется всего несколько обращений к памяти.
>> Если используется wildcards, то число обращений к памяти будет кратно
>> число частей, например, в *.example.com - две части.
>> 
>> При использовании NDBM скорость может быть существенно меньше, когда
>> нужно идти на диск. Если же данные находятся в памяти, то возможно,
>> сопоставимо, но я не знаю, сколько обращений к памяти нужно для поиска
>> имени.
> Wildcards в именах хостов нет.
>
> Если location = / придется проксировать на Апач, то в большинстве случаев, 
> как мне кажется, на момент отдачи статики из-под этого location, нужные места 
> NDBM-файла уже будут где-нибудь в кэшах ОС.

Для того, чтобы сходить в кэш ОС, нужно сделать сисколл. Между несколькими
обращениями к памяти и сисколлом разница три порядка, не меньше.

> Дело в том, что у меня DirectoryIndex index.html index.htm index.dhtml 
> index.wml .
> Сайты с dhtml и wml встречаются редко, но их сможет обработать только Апач.
> Если бы можно было объяснить nginx'у, чтоб index.htm, index.html и autoindex 
> он показывал сам, а dhtml и wml проксировал на апач, тогда не придется 
> проксировать location = / на Апач, и можно ожидать существенное ускорение. 
> Реально это сделать?

location = / {
     index       index.html index.htm index.dhtml index.wml;
     autioindex  on;
}

location = /index.html {
     root   ...
}

location = /index.htm {
     root   ...
}

location = /index.dhtml {
     proxy_pass ...
}

location = /index.wml {
     proxy_pass ...
}

nginx будет пробовать указанные индексы, а при отсутствии всех будет
autoindex. Если индекс найден, то делается внутрений редирект, и он
обрабатвается в соответствующем location.

>>> Как оптимально настроить map_hash_*_size для моего случая (из
>>> документации не понял)?
>> http://sysoev.ru/nginx/docs/hash.html
>> Для начала
>> server_names_hash_max_size  500000;
> Т.е. тупо увеличивать эти параметры, пока nginx не перестанет ругаться, все 
> остальное он решит сам? ;)

Да. Если не будет хватать, скажем, пятикратного превышения, то можно
пробовать увеличивать server_names_hash_bucket_size.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list