Hi gents,
Столкнулся со следующей ситуацией:
Есть некая html страничка, достаточно богатая обьектами Content-Type:
image/jpeg.
Есть два сервера отдающих эту страничку и эти image/jpeg.
dd
Отсюда вопрос:
- кто и исходя из каких данных принимает решение сколько одновременных
tcp cоединений к серверу хочется открывать ?
Добрался до RFC2616.
Пересмотрел еще раз логи в tcpdump.
С утверждениями в синхронности я погорячился... немного.
корректнее-было бы сказать "в одной сейсии".
То есть, к Апачу запросы идут не в восьми, а в двух соединениях ?
Вообще говоря, логично рассуждая, можно предположить что решение принимает
веб-браузер, наверное принимание во внимание заголовки которыми ответил ему
веб-сервер в первом запросе....
и с точки зрения RFC2616 связки nginx/mozilla и nginx/firefox ведут себя
совершенно вменяемо, т.е. открывая положенных два персиста на доменное имя,
НО....
в случае как мой (большое количество графики на страничке) апач в связке с
теми-же броузерами выигрывает в интерактивности в два раза, что печально.
Теперь обратимся к хедерам:
Apache:
----------------------------------->
GET /index.php HTTP/1.1
Host: namesys.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6)
Gecko/20060728 Firefox/1.5.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9
,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
<---------------------------------
HTTP/1.1 200 OK
Date: Tue, 22 Aug 2006 16:31:06 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Tue, 22 Aug 2006 16:31:06 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=5
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html;charset=windows-1251
NGINX:
------------------------------------->
GET /register.php HTTP/1.1
Host: namesys.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6)
Gecko/20060728 Firefox/1.5.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9
,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
<-------------------------------------
HTTP/1.1 200 OK
Server: nginx/0.3.54
Date: Tue, 22 Aug 2006 16:34:01 GMT
Content-Type: text/html;charset=windows-1251
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Tue, 22 Aug 2006 16:34:01 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=5
Content-Encoding: gzip
Keepalive такой для nginx выставлен был самостоятельно.
gzip я пробовал гасить, но ни на что кроме обьема трафика он не влияет.
криминала никакого в хэдерах , на первый взгляд , нет.
То есть, "Keep-Alive: timeout=15, max=5" добавлен как
add_header Keep-Alive "timeout=15, max=5"
?
Включен ли "tcp_nodelay on" ?
Игорь Сысоев
http://sysoev.ru