ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: nginx VS apache: Количество одновременных TCP соединений





On 8/23/06, Igor Sysoev <is@xxxxxxxxxxxxx> wrote:
Возможно, дело в том, что Апач выдаёт не просто
Keep-alive: timeout=15, max=5
Keep-alive: timeout=15, max=5
Keep-alive: timeout=15, max=5
Keep-alive: timeout=15, max=5

а

Keep-alive: timeout=15, max=5
Keep-alive: timeout=15, max=4
Keep-alive: timeout=15, max=3
Keep-alive: timeout=15, max=2
Connection: close

и закрывает соединение после пятого запроса, поэтому бразуер открывает новое.
nginx же не ограничивает число запросов по keep-alive соединению, поэтому
всё идёт через изначальные три.



данное утверждение верно. именно так и ведет себя апач.

утверждение про  nodelay так-же верно.


apache/srclib/apr/network_io/unix/sockopt.c
------------------------------------------------------------------
static apr_status_t sononblock(int sd)
{
#ifndef BEOS
    int fd_flags;

    fd_flags = fcntl(sd, F_GETFL, 0);
#if defined(O_NONBLOCK)
    fd_flags |= O_NONBLOCK;
#elif defined(O_NDELAY)
    fd_flags |= O_NDELAY;
#elif defined(FNDELAY)
    fd_flags |= FNDELAY;
#else
#error Please teach APR how to make sockets non-blocking on your platform.
#endif
    if (fcntl(sd, F_SETFL, fd_flags) == -1) {
        return errno;
    }
#else
    int on = 1;
    if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)
        return errno;
#endif /* BEOS */
    return APR_SUCCESS;
}
----------------------------------------------------


Итого:  есть вполне хорошее и логичное обьяснение сложившейся ситуации.
По тестам, время на открытие все той-же странички получается ~0.59s, что
как минимум не хуже чем у апача, при гораздо более приятной масштабируемости.


Игорь, а может быть имеет смысл по умолчанию         tcp_nodelay  on   ?

--
liberation loophole will make it clear

 




Copyright © Lexa Software, 1996-2009.