HandyCache форум

Главная категория => Общие вопросы => Тема начата: Сергей от 05 апреля 2007, 10:45:26



Название: Что такое Pipelining?
Отправлено: Сергей от 05 апреля 2007, 10:45:26
Что нам даст эта фича?
И как ее тестировать?


Название: Re: Что такое Pipelining?
Отправлено: Rick от 05 апреля 2007, 11:11:27
Посмотри тут (http://en.wikipedia.org/wiki/HTTP_pipelining). Картинка весьма наглядна.
Суть в том, что браузер посылает несколько запросов "пачкой", а сервер так же "пачкой" отдает.

Тестировать - IE это не поддерживает, в Опере некий "интеллектуальный алгоритм" который сам определяет когда использовать pipelining, в FF это по дефолту отключено и включается опциями network.http.pipelining и network.http.proxy.pipelining

Цитировать
Что нам даст эта фича?
Теоретически экономию ресурсов, увеличение производительности и увеличение скорости. В общем сплошной шоколад. Теоретически.


Название: Re: Что такое Pipelining?
Отправлено: DenZzz от 05 апреля 2007, 11:32:51
Что нам даст эта фича?

Еще пара ссылок:
http://mozilla.org/projects/netlib/http/pipelining-faq.html
http://operawiki.info/HttpProtocol

Нам это даст поддержку преимуществ HTTP/1.1 - передачу на сервер сразу нескольких запросов в одном соединении, не дожидаясь ответов. Теоретически, это должно увеличить скорость загрузки страниц на медленных каналах и уменьшить количество TCP/IP пакетов (нагрузку на сеть).

Кроме того, это должно решить проблемы с путаницей картинок в FireFox (http://handycache.ru/component/option,com_smf/Itemid,10/topic,41.0/) и некоторые проблемы в Опере (http://handycache.ru/component/option,com_smf/Itemid,10/topic,172.msg1501/#msg1501)...


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 05 апреля 2007, 11:47:47
Сергей
Наибольшую выгоду от Pipelining получат те, у кого время отклика составляет существенную часть от общего времени коннекта. В первую очередь, это обладатели спутникового интернета, потом DSL, потом Dial-Up.

PS Может, здесь и продолжим обсуждение тестирования поддержки Pipelining?
У меня сразу возник вопрос. В логе строки имеют теперь вид:
05.04.2007 11:37:11 # 493/519 >>> URL: http://handycache.ru/forum/Themes/SlickPro_Graphite/images/icons/folder_open.gif
Что означает 519 в # 493/519? Предполагаю, что это относится к Pipelining.


Название: Re: Что такое Pipelining?
Отправлено: Rick от 05 апреля 2007, 12:01:30
Нам это даст поддержку преимуществ HTTP/1.1 - передачу на сервер сразу нескольких запросов в одном соединении, не дожидаясь ответов. Теоретически, это должно увеличить скорость загрузки страниц на медленных каналах и уменьшить количество TCP/IP пакетов (нагрузку на сеть).
Не все так радужно. Поскольку ответы сервер должен давать в строго той же последовательности как получались запросы, один затормозивший запрос тормозит все последующие в "пачке".

Что означает 519 в # 493/519?
Это номер строки в Мониторе.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 05 апреля 2007, 14:11:43
Это номер строки в Мониторе.
Переформулирую: что означает написание через дробь 493/519? Значит ли это, что данная строка лога относится к строке монитора 519 и этот файл получен по Pipeline в рамках одного соединения после файла, обозначенного в 493 строке монитора?


Название: Re: Что такое Pipelining?
Отправлено: Rick от 05 апреля 2007, 14:43:32
Значит ли это, что данная строка лога относится к строке монитора 519
Да.

Цитировать
и этот файл получен по Pipeline в рамках одного соединения после файла, обозначенного в 493 строке монитора?
Не так. В твоем примере 493 - номер соединения. 519 - номер строки в Мониторе. Если в рамках одного соединения было сделано несколько запросов то будет, например, 493/519 и 493/524.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 09 апреля 2007, 21:06:50
На мой взгляд, pipelining не будет полноценно использоваться, пока НС не начнет возвращать "HTTP 1.1" в собственных ответах (в тех, где сервером значится HandyCache). Мы должны возвращать клиенту максимально поддерживаемую нами подверсию HTTP (т.е. HTTP 1.1).
Сейчас происходит так. Опера запоминает, что запрошенный хост (а на самом деле НС) отвечает HTTP 1.0, и запоминает его как неподдерживающий HTTP 1.1 и соответственно pipelining. В итоге в процессе следующих обращений к этому хосту pipelining Опера не инициирует.


Название: Re: Что такое Pipelining?
Отправлено: Rick от 09 апреля 2007, 22:07:23
Имхо еще бы необходима собственно опция включающая/отключающая Pip в HC.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 09 апреля 2007, 22:47:28
Еще мне кажется, ничего положительного в поддержку pipeline не привносят формируемые НС заголовки Proxy-Connection.
Насколько я знаю, это изобретение Netscape не регламентировано никакими стандартами и применяется (применялось) только в нетскейповских браузерах. Стандартом HTTP определен заголовок Connection, который обязан понимать любой клиент. С учетом этого предлагаю не использовать Proxy-Connection.
Как работать с заголовком Connection, постараюсь изложить позже.


Название: Re: Что такое Pipelining?
Отправлено: DenZzz от 09 апреля 2007, 23:25:50
Сейчас происходит так. Опера запоминает, что запрошенный хост (а на самом деле НС) отвечает HTTP 1.0, и запоминает его как неподдерживающий HTTP 1.1 и соответственно pipelining.

В каких ответах HC сейчас формирует HTTP/1.0 ? Вроде, везде HTTP/1.1...

Цитировать
Насколько я знаю, это изобретение Netscape не регламентировано никакими стандартами и применяется (применялось) только в нетскейповских браузерах.

Однако, великий и всемогущий IE тоже использует заголовок Proxy-Connection...


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 09 апреля 2007, 23:38:40
В каких ответах HC сейчас формирует HTTP/1.0 ? Вроде, везде HTTP/1.1...
Если запрос HTTP 1.0, то, собственно, во всех без исключения (по крайней мере, у меня): 304, 403, 404, 430, 200 (НС).
Цитировать
Однако, великий и всемогущий IE тоже использует заголовок Proxy-Connection...
А где он описан? Когда и как его надо использовать? Почему/для каких целей его использует НС?
Я этого за IE не замечал.


Название: Re: Что такое Pipelining?
Отправлено: mai62 от 09 апреля 2007, 23:49:21
Михаил
Цитировать
На мой взгляд, pipelining не будет полноценно использоваться, пока НС не начнет возвращать "HTTP 1.1" в собственных ответах (в тех, где сервером значится HandyCache).
Сейчас НС в своих ответах отдает то, что получает в запросах браузера.
Rick
Цитировать
Имхо еще бы необходима собственно опция включающая/отключающая Pip в HC.
И что должно происходит при включении/выключении этой опции?


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 09 апреля 2007, 23:54:00
Сейчас НС в своих ответах отдает то, что получает в запросах браузера.
НС должен, на мой взгляд, и на запрос HTTP 1.0, и на 1.1 давать ответ HTTP 1.1. Этим НС сообщит браузеру, что он поддерживает 1.1. Имхо, исходя из этого ответа браузер (по крайней мере, Опера) будет в дальнейшем строить взаимоотношения с НС при обращении к тому же хосту.
Такой ответ, собственно, как мне помнится, определен стандартом и/или рекомендациями к нему. Если нужно, могу отыскать.


Название: Re: Что такое Pipelining?
Отправлено: Rick от 10 апреля 2007, 00:06:44
И что должно происходит при включении/выключении этой опции?
Видимо должно выдаваться Proxy-Connection: Close? Радикальный, но не лучший способ. :)

Суть в том, что у многих пользователей проблемы с pipelining'ом: в зависимости от удаленного сервера и от сереверов через которые осуществляется к ним доступ. Кроме того, некоторые программы с ним не дружат. В частности антивирус Касперского: на его форуме ответы от крайности "не поддерживает вообще", до самого оптимистичного из того, что было сказано: "с pipelining'ом будет намного медленнее, чем без него" (с) Global Moderator форума KAV.
Учитывая, что в Опере невозможно отключить пип без отключения http 1.1 желательно наличие такой опции в НС.


Название: Re: Что такое Pipelining?
Отправлено: mai62 от 10 апреля 2007, 00:31:47
Михаил
Цитировать
Если нужно, могу отыскать.
Нужно.
Rick
Цитировать
Видимо должно выдаваться Proxy-Connection: Close?
Тогда так и называть надо эту опцию - Persistent connection.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 10 апреля 2007, 00:33:49
mai62
Здесь (http://tools.ietf.org/html/rfc2145#section-2.3).
Цитировать
An HTTP server SHOULD send a response version equal to the highest
   version for which the server is at least conditionally compliant, and
   whose major version is less than or equal to the one received in the
   request.


Название: Re: Что такое Pipelining?
Отправлено: mai62 от 10 апреля 2007, 00:45:18
Михаил
Хорошо, сделаю 1.1


Название: Re: Что такое Pipelining?
Отправлено: Rick от 10 апреля 2007, 00:51:37
Тогда так и называть надо эту опцию - Persistent connection.
Я потому и говорю, что не лучший способ: Persistent connection хотелось бы наверное сохранить. А как разделить Persistent connection и Pipelining я не знаю/не разбирался.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 10 апреля 2007, 14:04:23
mai62
Тестирую сборку 21 с HTTP 1.1. Опера перестала закрывать соединение после каждого скачанного файла. Работа ускорилась. В общем, постоянные соединения наконец заработали!!!  :good:
Тем не менее, pipelining не наблюдается - НС шлет запрос по открытому соединению только после получения ответа на предыдущий запрос по этому соединению. Надо разбираться.
Как НС определяет, когда открывать новое соединение, а когда слать запрос по существующему?


Название: Re: Что такое Pipelining?
Отправлено: mai62 от 10 апреля 2007, 14:53:38
Это определяет не НС, а браузер. Про оперу пишут, что у нее какой-то эвристический алгоритм, который управляет включением/выключением pipelining. В FF pipelining включается в настройках и я его наблюдаю.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 10 апреля 2007, 23:58:52
При ответе "502 Bad gateway/Not connected (HC)" отдается ответ HTTP 1.0. Имхо, тоже заменить на HTTP 1.1.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 12 апреля 2007, 23:39:30
По осколкам собрал скудную информацию о заголовке Proxy-Connection:
Придуман Netscape в период "безвластия", когда постоянные соединения уже придумали, а HTTP 1.1 еще не утвердили в качестве стандарта. К этому же периоду относятся заголовки Keep-Alive:. Чтоб эти постоянные соединения умел поддерживать прокси, Netscape придумала Proxy-Connection: keep-alive. Чтоб разорвать - Proxy-Connection: Close. В дальнейшем при принятии HTTP 1.1 все это стало делаться заголовком Connection. Тем не менее, остались некоторые HTTP 1.0 серверы, понимающие Proxy-Connection. Прокси, поддерживающим HTTP 1.1, рекомендовано его инициативно не использовать (некоторое ПО вообще его не понимает), но распознавать можно и научить для правильной работы с этими старыми серверами.
Интересные отклики о природе и нужности этого заголовка здесь (http://www.hpl.hp.com/personal/ange/archives/http-wg-archive/1200.html) и здесь (http://lists.w3.org/Archives/Public/ietf-http-wg-old/2000SepDec/0016.html).
Предварительный вывод: инициативно в ответах НС использовать этот заголовок не надо. Пользоваться надобно Connection:


Название: Re: Что такое Pipelining?
Отправлено: Rick от 13 апреля 2007, 00:32:55
По осколкам собрал скудную информацию о заголовке Proxy-Connection
Да, инфы кот наплакал. Заголовок практически нигде не описан, но вот парадокс: все его знают. :-X

Цитировать
...а HTTP 1.1 еще не утвердили в качестве стандарта.
Если занудствовать, то RFC не стандарт, а рекомендация.

Цитировать
К этому же периоду относятся заголовки Keep-Alive
Который так же понимается всеми браузерами и серверами.

Цитировать
Тем не менее, остались некоторые HTTP 1.0 серверы
Осталось еще больше серверов 1.1, которые без этого "жить не могут".

Фигня в том, что нет ясности. Ее действительно нет, нигде нет какого-либо дока который можно было бы считать нормативным и делать как в нем написано. Есть только практика: приходится подстаиваться под то, что понимают *nix и win серверы. А практически все они и понимают Proxy-Connection в запросе и сами отдают Proxy-Connection в ответе. Но ясности как _должно_быть_ правильно нет.


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 13 апреля 2007, 02:54:04
Да, инфы кот наплакал. Заголовок практически нигде не описан, но вот парадокс: все его знают. :-X
Если я понял твое мнение, то этот заголовок правильней указывать НС в своих ответах, чем Connection?
Цитировать
Который так же понимается всеми браузерами и серверами.
В том и дело, что не всеми.
Цитировать
Если занудствовать, то RFC не стандарт, а рекомендация.
Не занудствуй. RFC 2616 - описание стандарта ;)
Цитировать
Осталось еще больше серверов 1.1, которые без этого "жить не могут".
Спокойно могут. Каждый случай появления Proxy-Connection или Keep-Alive - это дополнительная нагрузка на сервер в плане того, что он вынужден распознавать эти заголовки ради совместимости с вариациями старого HTTP 1.0. Но мы то претендуем на полноценный 1.1 и должны, имхо, инициировать заголовки 1.1.
Цитировать
Фигня в том, что нет ясности. Ее действительно нет, нигде нет какого-либо дока который можно было бы считать нормативным и делать как в нем написано. Есть только практика: приходится подстаиваться под то, что понимают *nix и win серверы. А практически все они и понимают Proxy-Connection в запросе и сами отдают Proxy-Connection в ответе. Но ясности как _должно_быть_ правильно нет.
Все они понимают Connection. Это как раз гарантировано. И ясности с ним больше. А вот Proxy-Connection - не все понимают. Был уже и здесь на форуме случай с Naviscope. Имелось подозрение на непонимание им Proxy-Connection: keep-alive. Найти не смог. Стерто?


Название: Re: Что такое Pipelining?
Отправлено: DenZzz от 13 апреля 2007, 08:20:09
Был уже и здесь на форуме случай с Naviscope. Имелось подозрение на непонимание им Proxy-Connection: keep-alive. Найти не смог. Стерто?

Поиск (http://handycache.ru/component/option,com_smf/Itemid,10/action,search/) по слову "Naviscope" дает ссылку на ту тему (http://handycache.ru/component/option,com_smf/Itemid,10/topic,225.0/)! Плохо искал...

Вряд ли там дело в заголовке "Proxy-Connection", т.к. ответ "200 From cache" Naviscope обрабатывал нормально:

Заметил такую вещь: когда ответ НС "200 From cache" - тогда все нормально, когда ответ "304 Not modified" - тогда глюк и зависание.

Скорее проблема была в отсутствии "Content-Length: 0" в ответе "304". Сейчас это поправлено в бете...


Название: Re: Что такое Pipelining?
Отправлено: Rick от 19 апреля 2007, 02:13:23
Похоже, так получилось, что у нас в рядах бета-тестеров нет ни одого пользователя FF. Просьба ко всем: даже если вы препочитаете другой браузер - потестите плз работу тестовых билдов и в FF. Суть в том, что именно в FF работа с "пипеткой" наиболее поддается управлению: в нем есть опции для этого. В Опере опций управления никаких нет и отследить что происходит без анализа логов невозможно - убивается много времени впустую. IE просто вычеркнут из списка.
Однако проблемы есть и их надо отследить.


Название: Re: Что такое Pipelining?
Отправлено: Rick от 25 апреля 2007, 00:18:58
Судя по всеобщему молчанию pipelining никто не пользует. :( Или он не включен. В FF необходимо в адресной строке браузера ввести about:config и включить опции network.http.proxy.pipelining и network.http.pipelining (по умолчанию они отключены).


Название: Re: Что такое Pipelining?
Отправлено: v0lt от 25 апреля 2007, 06:56:49
Цитата: Rick
Судя по всеобщему молчанию pipelining никто не пользует. :(
Как узнать что он работает? В мониторе ничего не видно.

У меня глюк: если Flashget что-нить качает напрямую (без HC) даже в один поток, то в Фоксе я бывает не могу открыть никакую страницу? Это ведь никак не может быть связано с пипелайнингом или может?


Название: Re: Что такое Pipelining?
Отправлено: NothingAnother от 25 апреля 2007, 08:04:00
Судя по всеобщему молчанию pipelining никто не пользует. :( Или он не включен
У меня в Fx3 включен. Но пока не вполне понятно, как выяснить реальное использование режима ("Live HTTP Headers" и "Fiddler" об этом не сообщают). Штука в том, что pipelining (в том числе и over proxy) у меня был включен всегда, при этом никакой путаницы картинок не наблюдалось...

...даже в один поток... Это ведь никак не может быть связано с пипелайнингом
Связь крайне сумнительна. Скорее всего просто FG полностью забивает твой канал (кол-во потоков здесь ни при чём) и браузер спотыкается на таймаутах. Если тебе это критично - в FG можно вручную настроить ограничение


Название: Re: Что такое Pipelining?
Отправлено: mai62 от 25 апреля 2007, 13:36:32
NothingAnother
Цитировать
как выяснить реальное использование режима
В логе сниффера или HC пипелайнинг проявляется в том, что нарушается строгий порядок, когда в одном соединении ответ следует за запросом. При пипелайнинге видно, что следует подряд несколько запросов, а затем подряд несколько ответов. При ошибках обработки таких ситуаций в браузере будет происходить искажение вида страницы (чаще всего перепутанные картинки). Если вы обнаружите искажение страницы, желательно попытаться повторить ситуацию с включенным ведением лога и Отладочной информацией. В начала файла лога напишите какой характер искажения страницы вы наблюдали и пришлите его мне. Приветствуется доп. информация: скриншоты, логи монитора.


Название: Re: Что такое Pipelining?
Отправлено: Rick от 25 апреля 2007, 13:42:39
Как узнать что он работает? В мониторе ничего не видно.
Только по косвенным признакам: перепутанным картинкам, по зависшим соединениям в текущих, по сериям 502 в мониторе: т.е. несколько файлов подряд имеют 502, при этом у некоторых "Отправлено" пусто.
Верный способ - это анализ логов: в рамках одного соединения отправляется несколько запросов. Т.е. запрос1-запрос2-ответ1-ответ2. Не путать с парами запрос1-ответ1-запрос2-ответ2 в рамках одного соединения - это не pipelining, это persistent.
Кстати, опция FF network.http.max-persistent-connections-per-proxy должна иметь значение >0 (по дефолту 4).
Но анализ логов - дело долгое и после каждой страницы их смотреть же не станешь. Поэтому нужно включить pipelining и persistent в FF и отслеживать "ненормальности" и ошибки. А уж затем лезть в логи.

Штука в том, что pipelining (в том числе и over proxy) у меня был включен всегда, при этом никакой путаницы картинок не наблюдалось...
Может быть какой-то из серверов через который у тебя доступ в инет не поддерживает pipelining. Включи ведение лога, открой главную страницу handycache.ru (желательно с рекламой) и проверь по логам наличие цепочек из нескольких запросов-ответов.


Название: Re: Что такое Pipelining?
Отправлено: v0lt от 25 апреля 2007, 23:21:37
Цитата: Rick
Только по косвенным признакам: перепутанным картинкам, по зависшим соединениям в текущих, по сериям 502 в мониторе: т.е. несколько файлов подряд имеют 502, при этом у некоторых "Отправлено" пусто.
Кошмар, картинки действительно путаются. Окрыл сразу 4 страницы на двух картинки перемешаны, на третьей вроде все нормально, четвертая немного не догрузилась. И самое обидное это то, что HC не дает картинку обновить, отвечая "Not modifed". Лога пока нет, попробую завтра поймать...


Название: Re: Что такое Pipelining?
Отправлено: NothingAnother от 26 апреля 2007, 08:17:56
Только по косвенным признакам: перепутанным картинкам, по зависшим соединениям в текущих, по сериям 502 в мониторе: т.е. несколько файлов подряд имеют 502, при этом у некоторых "Отправлено" пусто. Верный способ - это анализ логов: в рамках одного соединения отправляется несколько запросов. Т.е. запрос1-запрос2-ответ1-ответ2
Привет, Rick! Я тут в исследовательских целях подгрузил страничку с заведомо большим количеством картинок - и сразу как-то странно стало всё... :oops: Запросы внутри соединения уходят кучей - ответы возвращаются не в том же порядке, и при этом ничего не путается! Как такое может быть? Чего-то я недопонимаю... ??? Посмотри этот лог, пожалуйста (может просто криво смотрю - мне такое кол-во текста пока тяжеловато :'() :thanks:
P.S. Хотел тебе в ПМ написать, но не нашёл там возможности вложения
P.P.S. Что-то у меня форум перекосячило - не могу вложение прикрепить - отправлю тебе на мыло


Название: Re: Что такое Pipelining?
Отправлено: Rick от 26 апреля 2007, 19:36:05
Я тут в исследовательских целях подгрузил страничку с заведомо большим количеством картинок
Я тестирую и отлавливаю ошибки на главной странице нашего сайта. Чего и всем предлагаю делать. Для отлавливания багов с пипеткой наша "морда" очень хорошо подходит: довольно много мелких картинок (которые по идее у всех давно есть в кэше), и несколько, которые грузятся с других (внешних) серверов. По моим наблюдениям, последнее условие как-раз наиболее благоприятное (если это можно так назвать) для возникновения ошибок. Поэтому и смотреть нужно с включенной рекламой: именно из-за гуглевских ссылок чаще всего и ошибки.

Цитировать
Запросы внутри соединения уходят кучей - ответы возвращаются не в том же порядке, и при этом ничего не путается!
Посмотрел - все в том же порядке. Хотя весь лог досконально я не просматривал - разобрал два первых соединения (#3 и #4).


Название: Re: Что такое Pipelining?
Отправлено: Rick от 26 апреля 2007, 19:39:35
Лога пока нет, попробую завтра поймать...
Пока не надо - на подходе новый билд. Вот на новой сборке и желательно будет отловить оставшиеся ошибки.


Название: Re: Две разных закачки на один URL
Отправлено: Михаил от 22 мая 2007, 17:10:26
Для сравнения не могу наблюдать pipelining в FireFox.
network.http.pipelining - true
network.http.pipelining.maxrequests - 10
network.http.proxy.pipelining - true
Подскажите, что еще нужно настроить, чтоб наблюдать конвейер?


Название: Re: Две разных закачки на один URL
Отправлено: mai62 от 22 мая 2007, 18:02:03
Должно вроде работать с такими настройками. Там от дефолтных настроек надо только разрешить pipelining и он начинает работать.
Цитировать
network.http.pipelining.maxrequests - 10
Я бы так много не ставил. Будут длинные цепочки и ты их замучаешься отслеживать, вполне достаточно дефолтных 4.


Название: Re: Две разных закачки на один URL
Отправлено: Михаил от 22 мая 2007, 18:21:52
... вполне достаточно дефолтных 4.
Поставил и так - все равно Keep-Alive есть, а конвейера нет. Пока не получит ответ на предыдущий запрос - новый не шлет. В чем может быть заковыка?


Название: Re: Две разных закачки на один URL
Отправлено: Rick от 22 мая 2007, 19:16:47
В чем может быть заковыка?
Внешний прокси имеется?


Название: Re: Две разных закачки на один URL
Отправлено: Михаил от 22 мая 2007, 19:48:09
Внешний прокси имеется?
FireFox-HC-Proxomitron-Интернет. Без Проксомитрона тоже нет pipelining'a. Кто-нибудь его наблюдал воочию в FireFox'e? Как достичь? А то самому муторно разбираться. Только ради эксперимента надо.


Название: Re: Две разных закачки на один URL
Отправлено: Rick от 22 мая 2007, 19:57:27
Кто-нибудь его наблюдал воочию в FireFox'e? Как достичь?
Я наблюдаю постоянно.
network.http.pipelining=true
network.http.pipelining.maxrequests=4
network.http.proxy.pipelining=true
network.http.max-persistent-connections-per-proxy=4
network.http.max-persistent-connections-per-server=2

Погоду может портить внешний прозрачный прокси у провайдера.


Название: Re: Две разных закачки на один URL
Отправлено: Михаил от 22 мая 2007, 20:08:01
Я наблюдаю постоянно.
Погоду может портить внешний прозрачный прокси у провайдера.
У меня network.http.max-persistent-connections-per-server=4, но это влиять не будет.
Прозрачный прокси провайдера тоже по идее не влияет (если конечно не отвечает HTTP 1.0). FireFox видит только НС и общается с ним. Для него внешний мир - это НС. И с НС он и не хочет конвейер организовывать. Специально в автономном режиме проверил - тоже нет конвейера. Приложи, плиз свой файл конфигурации FireFox. Попробую слепо его скопировать. Мож, дело в еще каких настройках.


Название: Re: Две разных закачки на один URL
Отправлено: Rick от 22 мая 2007, 20:20:44
Приложи, плиз свой файл конфигурации FireFox. Попробую слепо его скопировать. Мож, дело в еще каких настройках.
Сорри, но я понятия не имею в каком файле FF хранит настройки. Ткни плз пальцем.


Название: Re: Две разных закачки на один URL
Отправлено: Михаил от 22 мая 2007, 20:32:46
Сорри, но я понятия не имею в каком файле FF хранит настройки. Ткни плз пальцем.
М-да... Я FireFox практически впервые в жизни запустил. Не издевайся. :)


Название: Re: Две разных закачки на один URL
Отправлено: Rick от 22 мая 2007, 21:32:09
Дык вот и я его терпеть не могу - пользуюсь только для тестов по необходимости.


Название: Re: Две разных закачки на один URL
Отправлено: NothingAnother от 22 мая 2007, 21:55:30
в каком файле FF хранит настройки. Ткни плз пальцем
Тыц (prefs.js)!


Название: Re: Две разных закачки на один URL
Отправлено: Rick от 22 мая 2007, 22:09:50
NothingAnother, cпасибо.


Название: Re: Две разных закачки на один URL
Отправлено: Михаил от 23 мая 2007, 00:11:27
Rick
Не получилось и с этими настройками. Странно как-то. У тебя Fox действительно шлет по одному соединению сразу пачку GET-запросов, и только потом получает на них ответы?


Название: Re: Две разных закачки на один URL
Отправлено: Rick от 23 мая 2007, 05:10:14
Действительно и шлет и получает пачками.


Название: Неэффективность Pipelining'а
Отправлено: popkov от 14 октября 2007, 20:34:37
Впрочем, наблюдается неэффективность pipelining: если хотя бы один запрос тормозит, как например на странице
http://ma.fashiontime.ru/all/models/page-1.html
недоступна рекламная ссылка
http://newsblock.marketgid.com/j//216/6
 - и из=за неё приходится ждать весь tiomeout (несколько секунд), пока в Мониторе не появится
Цитировать
14.10.2007/20:29:47 local/127.0.0.1 http://newsblock.marketgid.com/j//216/9 0 0/113 0 0 "502 Bad Gateway / Not connected (HC)" П.4
, и только тогда дозагружаются оставшиеся картинки. Пока этот ответ не поступит, FireFox ждёт...
Причём при работе в обход HC такой задержки не наблюдается.
Все настройки, связанные с pipelining, в FireFox установлены на True.


Название: Re: Неэффективность Pipelining'а
Отправлено: DenZzz от 14 октября 2007, 22:14:50
Впрочем, наблюдается неэффективность pipelining: если хотя бы один запрос тормозит

Да, и это уже обсуждалось в данной теме выше! Такова уж сущность Pipelining'а - если один запрос тормозит, то ждет вся цепочка! Это не баг, а особенность конвейера!

Цитировать
Причём при работе в обход HC такой задержки не наблюдается.

Этому есть логическое объяснение. Когда браузер работает через прокси, то он может по одному открытому с прокси соединению слать конвейером запросы на совершенно разные сайты, а прокси уже сам устанавливает соединения с нужными серверами. И если один из них тормозит, то встает вся цепочка!
Когда браузер работает напрямую, то он сам устанавливает отдельные соединения с нужными серверами и использует конвейер уже в их рамках, т.е. если один сервер тормозит (в твоем примере - сервер рекламы), то другие продолжают передавать данные (в твоем примере - сервер сайта).

Цитировать
Все настройки, связанные с pipelining, в FireFox установлены на True.

Там есть возможность более тонкой настройки! Попробуй поиграть с количеством запросов в одном соединении и количеством непрерывных соединений с прокси и сервером:
Цитировать
network.http.pipelining.maxrequests=4
network.http.max-persistent-connections-per-proxy=4
network.http.max-persistent-connections-per-server=2


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 14 октября 2007, 23:08:59
Цитировать
если один запрос тормозит, то ждет вся цепочка!
В случае запросов, тормозящих по причине ожидания "Пауз на повторные...", что если поступать таким образом:
Не выжидать эту паузу, а сразу формировать ответ "503 Service Unavailable" с заголовком Retry-After со значением, равным паузе. Мы дадим клиенту знать, через сколько времени надо перезапросить, и снимем с себя эту заботу. Клиент будет повторять запрос с определенными нами промежутками времени и то количество раз, которое установлено в его собственных настройках. При этом проблемный УРЛ не затормозит поток ответов по постоянному соединению между НС и клиентом.


Название: Re: Что такое Pipelining?
Отправлено: DenZzz от 15 октября 2007, 08:57:17
Не выжидать эту паузу, а сразу формировать ответ "503 Service Unavailable" с заголовком Retry-After со значением, равным паузе.

Имхо, так имеет смысл делать, только если дальше в очереди этого соединения есть запросы к другому серверу (сайту). Иначе, велика вероятность, что следующие запросы постигнет та же участь и мы все их отфутболим назад клиенту! В итоге, время ожидания загрузки только возрастет!

Цитировать
Клиент будет повторять запрос с определенными нами промежутками времени и то количество раз, которое установлено в его собственных настройках.

Что-то не припоминаю в IE такой тонкой настройки... ;)


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 15 октября 2007, 10:56:44
Имхо, так имеет смысл делать, только если дальше в очереди этого соединения есть запросы к другому серверу (сайту). Иначе, велика вероятность, что следующие запросы постигнет та же участь и мы все их отфутболим назад клиенту! В итоге, время ожидания загрузки только возрастет!
Можно и так.


Название: Re: Что такое Pipelining?
Отправлено: popkov от 18 октября 2007, 02:14:30
Когда браузер работает через прокси, то он может по одному открытому с прокси соединению слать конвейером запросы на совершенно разные сайты, а прокси уже сам устанавливает соединения с нужными серверами.
Выходит, это принципиальный недостаток работы через прокси? Хотя с другой стороны, это недоработка браузера: следовало бы ему для каждого сайта устанавливать новое соединение с прокси-сервером, чтобы избежать подобных тормозов и увеличить производительность. Даже глупо как-то получается... Выходит, преимущество pipelining при открытии страницы, содержащей ссылки на разные сервера, превращается в недостаток из-за тупости браузера?


Название: Re: Что такое Pipelining?
Отправлено: Михаил от 05 ноября 2007, 13:22:37
Поэкспериментировал. Вышеозвученное предложение (http://handycache.ru/component/option,com_smf/Itemid,10/topic,405.msg7459/#msg7459) не проходит. Пробовал слать ответы 503 с Retry-After и 408. Опера и ухом не ведет - перезапрашивать повторно и не пытается :(.