Re[9]: очень много клиентов

Igor Sysoev is at rambler-co.ru
Sat Feb 18 18:02:57 MSK 2006


On Sat, 18 Feb 2006, Anton Maksimenkov wrote:

>>>> Для картинок можно вычислять root и отдавать их nginx'ом:
>>>>      location  ~* \.(gif|jpe?g|png)$ {
>>>>          вычисление рута, исходя из $http_host
>>>>      }
>>> Ок, я так сделал. Картинки отдаются nginx'ом путем приведенного выше
>>> блока, а остальное проксируется на апач. Результат опять плачевный:
>
> Кстати говоря, "делается" это, преодолевая следующий глюк: если
> сделать так
> location ~* \.(gif|jpe?g|png)$ {
>        if ($http_host ~* ^(.+)\.domen\.ru.*$) {
>                set $rootdir    /var/www/domen.ru/$1/;
>        }
>        root    $rootdir;
> }
> то nginx будет пытаться взять файлы типа
> /var/nginx/var/www/domen.ru/vasya/...
> ^^^^^^^^^^

Если при конфигурации nginx не видит в начале пути "/", то он считает
его относительным от корня nginx (--prefix=).

> Если поставить ещё один слэш
>        root    /$rootdir;
>                ^
> то будет //var/www/domen.ru/vasya/..., то  есть работает. Но глючок
> есть :-)

Так и должно.

> И ещё. Почему то такая батва наблюдалась когда НА ЛЮБОМ из описанных
> серверов стояло root $rootdir; (без слэша). То есть на одном из них
> стоит без слэша, а на другом со слэшом, но всё равно на нём глюк есть.
> МОЖЕТ БЫТЬ это было и потому что не успел перезапуститься nginx (по
> сигналу -HUP делал), когда я поставил слэш. Но после 15-20 секунд я
> подключался, глюк был. После того как НА ВСЕХ ОСТАЛЬНЫХ server{}
> поставил слэш, заработало...

Если на момент получения -HUP nginx держит keepalive соединения, то
по каждому из них может обработаться по одному запросу со старой
конфигурацией. После этого соединение закрывается.

>>> на большом трафике задержки. Тормоза, потом появляется страничка,
>>> потом картинки с большими задержками постепенно отдаются. Иногда
>> Судя по top, nginx'ы блокируются на диске. Нужно уменьшить worker_processes
>> до 1, а потом постепенно увеличивать и смотреть на трафик.
>
> с 1-м периодически пролетает:
> [crit] 6711#0: accept() failed (53: Software caused connection abort)
> while accepting new connection on X.X.X.X:80

Это нормальная ошибка - клиент закрыл соединение до того, как nginx
его принял.

> Довел до 4-х и worker_connections  до 8192;, всё равно crit
> возникают, хотя реже.
> Я добавил worker_connections  8192; (хотя параметр и не описан) потому
> что предположил, что он задает кол-во одновременно обслуживаемых
> подключений... Но не уверен.

Есть ли изменения в скорости отадачи ?

> Поэтому прошу разъяснить в общих словах, из каких соображений
> настраивать и чего ожидать от worker_processes и worker_connections.

worker_processes:
http://www.lexa.ru/nginx-ru/msg02429.html

worker_connections:
можно ставить очень большим, например, 30000. Главное, чтобы в ядре
хватило файлов, сокетов и памяти.


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





More information about the nginx-ru mailing list