Отличия nginx от varnish
Maxim Dounin
mdounin at mdounin.ru
Tue Dec 2 18:32:06 MSK 2008
Hello!
On Tue, Dec 02, 2008 at 05:34:41PM +0300, Монашёв Михаил wrote:
> Здравствуйте, Максим.
>
> > Нет, incqlen - это коннекции которые *не отдаются* приложениию по
> > accept(). Т.е. выгребать - нечего, от скорости приложения ничего
> > не зависит.
>
> > Возможное объяснение (если таки accept-фильтры varnish'ем
> > используются) - что нагрузка на nginx и varnish разная, и
> > на varnish просто всегда доставляют запросы целиком, а на nginx -
> > не всегда.
>
> > Попробуй руками пойти на varnish (telnet ... 80), и ничего не
> > посылая посмотреть на netstat -Lan - в incqlen должна появиться 1-чка.
> > Если не появилась - значит varnish по каким-то причинам
> > accept-фильтры не использует.
>
> 1 не появилась.
Т.е. accept-фильтры varnish'ем не используются, и вся эта длинная дискуссия -
ни о чём. :)
> тогда странно, что qlen у варниша всегда нулевая.
Ну это совсем другой вопрос, и ни одного вывода netstat'а
подтверждающего что у nginx'а это не так ты вроде не приводил. :)
Хотя тут как раз вполне подходит объяснение Антона. Поскольку
varnish тредовый - задержки на accept() меньше, и шансы увидеть
ненулевой qlen - малы. А nginx может блокироваться на диске, и за
это время в qlen может успеть накопиться.
Я бы ещё добавил что наличие многих процессов у nginx'а ситуацию
не сильно лечит при использовании accept_mutex'а - ибо worker
пытается получить accept_mutex раз в 500ms по умолчанию (тюнится
через accept_mutex_delay), и соответственно если не повезёт могут
быть задержки с accept()'ом вплоть до 500ms даже если есть
свободные worker'ы.
Maxim Dounin
More information about the nginx-ru
mailing list