<br><br><div><span class="gmail_quote">On 8/23/06, <b class="gmail_sendername">Igor Sysoev</b> <<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>> wrote:</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Возможно, дело в том, что Апач выдаёт не просто<br>Keep-alive: timeout=15, max=5<br>Keep-alive: timeout=15, max=5<br>Keep-alive: timeout=15, max=5<br>Keep-alive: timeout=15, max=5<br><br>а<br><br>Keep-alive: timeout=15, max=5
<br>Keep-alive: timeout=15, max=4<br>Keep-alive: timeout=15, max=3<br>Keep-alive: timeout=15, max=2<br>Connection: close<br><br>и закрывает соединение после пятого запроса, поэтому бразуер открывает новое.<br>nginx же не ограничивает число запросов по keep-alive соединению, поэтому
<br>всё идёт через изначальные три.<br><br></blockquote></div><br><br>данное утверждение верно. именно так и ведет себя апач.<br><br>утверждение про nodelay так-же верно.<br><br><br>apache/srclib/apr/network_io/unix/sockopt.c
<br>------------------------------------------------------------------<br>static apr_status_t sononblock(int sd)<br>{<br>#ifndef BEOS<br> int fd_flags;<br><br> fd_flags = fcntl(sd, F_GETFL, 0);<br>#if defined(O_NONBLOCK)
<br> fd_flags |= O_NONBLOCK;<br>#elif defined(O_NDELAY)<br> fd_flags |= O_NDELAY;<br>#elif defined(FNDELAY)<br> fd_flags |= FNDELAY;<br>#else<br>#error Please teach APR how to make sockets non-blocking on your platform.
<br>#endif<br> if (fcntl(sd, F_SETFL, fd_flags) == -1) {<br> return errno;<br> }<br>#else<br> int on = 1;<br> if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)<br> return errno;
<br>#endif /* BEOS */<br> return APR_SUCCESS;<br>}<br>----------------------------------------------------<br><br><br>Итого: есть вполне хорошее и логичное обьяснение сложившейся ситуации.<br>По тестам, время на открытие все той-же странички получается ~0.59s, что
<br clear="all">как минимум не хуже чем у апача, при гораздо более приятной масштабируемости.<br><br><br>Игорь, а может быть имеет смысл по умолчанию tcp_nodelay on ?<br><br>-- <br>liberation loophole will make it clear