миграция с 0.5.32 на 0.6.31
jackal
me at jackal.in
Thu Jun 19 17:35:25 MSD 2008
On Thursday 19 June 2008 16:57:28 Igor Sysoev wrote:
> On Thu, Jun 19, 2008 at 03:45:13PM +0400, jackal wrote:
> > Обновился до 0.6.31, и появилось несколько вопросов:
> >
> > 1) Нужно, чтобы домен domain.ru был в одной директиве server, а все
> > остальные - в другой.
> >
> > Раньше было:
> > server {
> > listen a.b.c.d:80 default accept_filter=httpready backlog=4096;
> > listen 80 default accept_filter=httpready backlog=4096;
> > server_name srv *;
> > ...
> > }
> > server {
> > listen a.b.c.d:80;
> > server_name domain.ru;
> > ...
> > }
> >
> > Сейчас, ввиду упразднения "server_name *", стало:
> > server {
> > listen a.b.c.d:80;
> > server_name domain.ru;
> > ...
> > }
> > server {
> > listen a.b.c.d:80 default accept_filter=httpready backlog=4096;
> > listen 80 default accept_filter=httpready backlog=4096;
> > ...
> > }
> >
> > Т.е. сервера поменялись местами. Всё работает, но:
> > а) ругается при старте:
> > [warn] 13775#0: conflicting server name "domain.ru" on a.b.c.d:80,
> > ignored
>
> По-видимому, hostname - domain.ru, нужно описать какое-нибудь имя во
> втором сервере.
Угу, так и есть. А как описать какое-нибудь имя во втором сервере,
если "звездочка" запрещена?
Или роль звездочки будет выполнять listen ... default?
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#listen
Ага, вроде так и есть...
>
> > б) На айпи a.b.c.d похоже не работает httpready
>
> Из чего сделан такой вывод ?
Во втором сервере:
listen a.b.c.d:80 default accept_filter=httpready backlog=4096;
listen 80 default accept_filter=httpready backlog=4096;
Если изменить backlog на 1024, получается вот такая картина:
tcp4 0/0/4096 a.b.c.d.80
tcp4 0/0/1024 *.80
(kern.ipc.somaxconn=4096)
Т.е. видно, что backlog для a.b.c.d не работает. Отсюда сделан вывод, что
accept_filter - тоже. Т.к. в мануале написано, что backlog и accept_filter
можно указывать только совместно с директивой default
>
> > 2) nginx проксирует апач. Апач "форкнут" на 12 процессов (ни больше ни
> > меньше). Раньше при кратковременных пиковых нагрузках апач
> > "аккумулировал" коннекты в очереди, а nginx покорно ждал. Сейчас же -
> > nginx сразу же отдает bad gateway.
> > Настройки идентичны:
> > proxy_connect_timeout 10;
> > proxy_send_timeout 30;
> > proxy_read_timeout 30;
> > proxy_send_lowat 12000;
> > proxy_buffer_size 8k;
> > proxy_buffers 32 32k;
> > Имеется ввиду примерно следующая ситуация:
> > Current listen queue sizes (qlen/incqlen/maxqlen)
> > Proto Listen Local Address
> > tcp4 181/0/511 127.0.0.1.8080
> > tcp4 0/0/4096 a.b.c.d.80
> > tcp4 0/24/4096 *.80
> > Т.е. очередь апача не переполнена, т.ч. коннекты не дропаются.
> > Как такое лечить? :) М.б. это связано с проблемой 1б?
>
> А в error_log какая ошибка ?
Здесь прошу прощения, ступил. nginx честно ждет отведенные 30 секунд, и выдает
bad gateway с ошибкой upstream timed out. Проблема была в бэкенде.
More information about the nginx-ru
mailing list