+  HandyCache форум
|-+  Главная категория» Общие вопросы» Что такое Pipelining?
Имя пользователя:
Пароль:
Страниц: 1 2 3 [Все]   Вниз
  Отправить эту тему    Печать  
Автор Тема: Что такое Pipelining?  (Прочитано 43886 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Сергей
Beta tester
*****

Репутация: +9/-2
Offline Offline

Сообщений: 621



« : 05 апреля 2007, 10:45:26 »

Что нам даст эта фича?
И как ее тестировать?
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #1 : 05 апреля 2007, 11:11:27 »

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

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

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

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #2 : 05 апреля 2007, 11:32:51 »

Что нам даст эта фича?

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

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

Кроме того, это должно решить проблемы с путаницей картинок в FireFox и некоторые проблемы в Опере...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #3 : 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.
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #4 : 05 апреля 2007, 12:01:30 »

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

Что означает 519 в # 493/519?
Это номер строки в Мониторе.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #5 : 05 апреля 2007, 14:11:43 »

Это номер строки в Мониторе.
Переформулирую: что означает написание через дробь 493/519? Значит ли это, что данная строка лога относится к строке монитора 519 и этот файл получен по Pipeline в рамках одного соединения после файла, обозначенного в 493 строке монитора?
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #6 : 05 апреля 2007, 14:43:32 »

Значит ли это, что данная строка лога относится к строке монитора 519
Да.

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

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #7 : 09 апреля 2007, 21:06:50 »

На мой взгляд, pipelining не будет полноценно использоваться, пока НС не начнет возвращать "HTTP 1.1" в собственных ответах (в тех, где сервером значится HandyCache). Мы должны возвращать клиенту максимально поддерживаемую нами подверсию HTTP (т.е. HTTP 1.1).
Сейчас происходит так. Опера запоминает, что запрошенный хост (а на самом деле НС) отвечает HTTP 1.0, и запоминает его как неподдерживающий HTTP 1.1 и соответственно pipelining. В итоге в процессе следующих обращений к этому хосту pipelining Опера не инициирует.
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #8 : 09 апреля 2007, 22:07:23 »

Имхо еще бы необходима собственно опция включающая/отключающая Pip в HC.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #9 : 09 апреля 2007, 22:47:28 »

Еще мне кажется, ничего положительного в поддержку pipeline не привносят формируемые НС заголовки Proxy-Connection.
Насколько я знаю, это изобретение Netscape не регламентировано никакими стандартами и применяется (применялось) только в нетскейповских браузерах. Стандартом HTTP определен заголовок Connection, который обязан понимать любой клиент. С учетом этого предлагаю не использовать Proxy-Connection.
Как работать с заголовком Connection, постараюсь изложить позже.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #10 : 09 апреля 2007, 23:25:50 »

Сейчас происходит так. Опера запоминает, что запрошенный хост (а на самом деле НС) отвечает HTTP 1.0, и запоминает его как неподдерживающий HTTP 1.1 и соответственно pipelining.

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

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

Однако, великий и всемогущий IE тоже использует заголовок Proxy-Connection...
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #11 : 09 апреля 2007, 23:38:40 »

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

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #12 : 09 апреля 2007, 23:49:21 »

Михаил
Цитировать
На мой взгляд, pipelining не будет полноценно использоваться, пока НС не начнет возвращать "HTTP 1.1" в собственных ответах (в тех, где сервером значится HandyCache).
Сейчас НС в своих ответах отдает то, что получает в запросах браузера.
Rick
Цитировать
Имхо еще бы необходима собственно опция включающая/отключающая Pip в HC.
И что должно происходит при включении/выключении этой опции?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #13 : 09 апреля 2007, 23:54:00 »

Сейчас НС в своих ответах отдает то, что получает в запросах браузера.
НС должен, на мой взгляд, и на запрос HTTP 1.0, и на 1.1 давать ответ HTTP 1.1. Этим НС сообщит браузеру, что он поддерживает 1.1. Имхо, исходя из этого ответа браузер (по крайней мере, Опера) будет в дальнейшем строить взаимоотношения с НС при обращении к тому же хосту.
Такой ответ, собственно, как мне помнится, определен стандартом и/или рекомендациями к нему. Если нужно, могу отыскать.
« Последнее редактирование: 10 апреля 2007, 00:13:43 от Михаил » Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #14 : 10 апреля 2007, 00:06:44 »

И что должно происходит при включении/выключении этой опции?
Видимо должно выдаваться Proxy-Connection: Close? Радикальный, но не лучший способ. Улыбка

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

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #15 : 10 апреля 2007, 00:31:47 »

Михаил
Цитировать
Если нужно, могу отыскать.
Нужно.
Rick
Цитировать
Видимо должно выдаваться Proxy-Connection: Close?
Тогда так и называть надо эту опцию - Persistent connection.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #16 : 10 апреля 2007, 00:33:49 »

mai62
Здесь.
Цитировать
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.
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #17 : 10 апреля 2007, 00:45:18 »

Михаил
Хорошо, сделаю 1.1
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #18 : 10 апреля 2007, 00:51:37 »

Тогда так и называть надо эту опцию - Persistent connection.
Я потому и говорю, что не лучший способ: Persistent connection хотелось бы наверное сохранить. А как разделить Persistent connection и Pipelining я не знаю/не разбирался.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #19 : 10 апреля 2007, 14:04:23 »

mai62
Тестирую сборку 21 с HTTP 1.1. Опера перестала закрывать соединение после каждого скачанного файла. Работа ускорилась. В общем, постоянные соединения наконец заработали!!!  Отлично!
Тем не менее, pipelining не наблюдается - НС шлет запрос по открытому соединению только после получения ответа на предыдущий запрос по этому соединению. Надо разбираться.
Как НС определяет, когда открывать новое соединение, а когда слать запрос по существующему?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #20 : 10 апреля 2007, 14:53:38 »

Это определяет не НС, а браузер. Про оперу пишут, что у нее какой-то эвристический алгоритм, который управляет включением/выключением pipelining. В FF pipelining включается в настройках и я его наблюдаю.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #21 : 10 апреля 2007, 23:58:52 »

При ответе "502 Bad gateway/Not connected (HC)" отдается ответ HTTP 1.0. Имхо, тоже заменить на HTTP 1.1.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #22 : 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, рекомендовано его инициативно не использовать (некоторое ПО вообще его не понимает), но распознавать можно и научить для правильной работы с этими старыми серверами.
Интересные отклики о природе и нужности этого заголовка здесь и здесь.
Предварительный вывод: инициативно в ответах НС использовать этот заголовок не надо. Пользоваться надобно Connection:
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #23 : 13 апреля 2007, 00:32:55 »

По осколкам собрал скудную информацию о заголовке Proxy-Connection
Да, инфы кот наплакал. Заголовок практически нигде не описан, но вот парадокс: все его знают. По секрету

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

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

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

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

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #24 : 13 апреля 2007, 02:54:04 »

Да, инфы кот наплакал. Заголовок практически нигде не описан, но вот парадокс: все его знают. По секрету
Если я понял твое мнение, то этот заголовок правильней указывать НС в своих ответах, чем 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. Найти не смог. Стерто?
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #25 : 13 апреля 2007, 08:20:09 »

Был уже и здесь на форуме случай с Naviscope. Имелось подозрение на непонимание им Proxy-Connection: keep-alive. Найти не смог. Стерто?

Поиск по слову "Naviscope" дает ссылку на ту тему! Плохо искал...

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

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

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

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #26 : 19 апреля 2007, 02:13:23 »

Похоже, так получилось, что у нас в рядах бета-тестеров нет ни одого пользователя FF. Просьба ко всем: даже если вы препочитаете другой браузер - потестите плз работу тестовых билдов и в FF. Суть в том, что именно в FF работа с "пипеткой" наиболее поддается управлению: в нем есть опции для этого. В Опере опций управления никаких нет и отследить что происходит без анализа логов невозможно - убивается много времени впустую. IE просто вычеркнут из списка.
Однако проблемы есть и их надо отследить.
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #27 : 25 апреля 2007, 00:18:58 »

Судя по всеобщему молчанию pipelining никто не пользует. Грустный Или он не включен. В FF необходимо в адресной строке браузера ввести about:config и включить опции network.http.proxy.pipelining и network.http.pipelining (по умолчанию они отключены).
Сообщить модератору   Записан
v0lt
Beta tester
*****

Репутация: +7/-0
Offline Offline

Сообщений: 127


« Ответ #28 : 25 апреля 2007, 06:56:49 »

Цитата: Rick
Судя по всеобщему молчанию pipelining никто не пользует. Грустный
Как узнать что он работает? В мониторе ничего не видно.

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

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #29 : 25 апреля 2007, 08:04:00 »

Судя по всеобщему молчанию pipelining никто не пользует. Грустный Или он не включен
У меня в Fx3 включен. Но пока не вполне понятно, как выяснить реальное использование режима ("Live HTTP Headers" и "Fiddler" об этом не сообщают). Штука в том, что pipelining (в том числе и over proxy) у меня был включен всегда, при этом никакой путаницы картинок не наблюдалось...

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

Мы тоже не всего читали Шнитке!..
© В. Вишневский
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #30 : 25 апреля 2007, 13:36:32 »

NothingAnother
Цитировать
как выяснить реальное использование режима
В логе сниффера или HC пипелайнинг проявляется в том, что нарушается строгий порядок, когда в одном соединении ответ следует за запросом. При пипелайнинге видно, что следует подряд несколько запросов, а затем подряд несколько ответов. При ошибках обработки таких ситуаций в браузере будет происходить искажение вида страницы (чаще всего перепутанные картинки). Если вы обнаружите искажение страницы, желательно попытаться повторить ситуацию с включенным ведением лога и Отладочной информацией. В начала файла лога напишите какой характер искажения страницы вы наблюдали и пришлите его мне. Приветствуется доп. информация: скриншоты, логи монитора.
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #31 : 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 (желательно с рекламой) и проверь по логам наличие цепочек из нескольких запросов-ответов.
Сообщить модератору   Записан
v0lt
Beta tester
*****

Репутация: +7/-0
Offline Offline

Сообщений: 127


« Ответ #32 : 25 апреля 2007, 23:21:37 »

Цитата: Rick
Только по косвенным признакам: перепутанным картинкам, по зависшим соединениям в текущих, по сериям 502 в мониторе: т.е. несколько файлов подряд имеют 502, при этом у некоторых "Отправлено" пусто.
Кошмар, картинки действительно путаются. Окрыл сразу 4 страницы на двух картинки перемешаны, на третьей вроде все нормально, четвертая немного не догрузилась. И самое обидное это то, что HC не дает картинку обновить, отвечая "Not modifed". Лога пока нет, попробую завтра поймать...
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #33 : 26 апреля 2007, 08:17:56 »

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

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #34 : 26 апреля 2007, 19:36:05 »

Я тут в исследовательских целях подгрузил страничку с заведомо большим количеством картинок
Я тестирую и отлавливаю ошибки на главной странице нашего сайта. Чего и всем предлагаю делать. Для отлавливания багов с пипеткой наша "морда" очень хорошо подходит: довольно много мелких картинок (которые по идее у всех давно есть в кэше), и несколько, которые грузятся с других (внешних) серверов. По моим наблюдениям, последнее условие как-раз наиболее благоприятное (если это можно так назвать) для возникновения ошибок. Поэтому и смотреть нужно с включенной рекламой: именно из-за гуглевских ссылок чаще всего и ошибки.

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

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #35 : 26 апреля 2007, 19:39:35 »

Лога пока нет, попробую завтра поймать...
Пока не надо - на подходе новый билд. Вот на новой сборке и желательно будет отловить оставшиеся ошибки.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #36 : 22 мая 2007, 17:10:26 »

Для сравнения не могу наблюдать pipelining в FireFox.
network.http.pipelining - true
network.http.pipelining.maxrequests - 10
network.http.proxy.pipelining - true
Подскажите, что еще нужно настроить, чтоб наблюдать конвейер?
Сообщить модератору   Записан
mai62
Автор HC
*****

Репутация: +226/-4
Offline Offline

Сообщений: 6383


« Ответ #37 : 22 мая 2007, 18:02:03 »

Должно вроде работать с такими настройками. Там от дефолтных настроек надо только разрешить pipelining и он начинает работать.
Цитировать
network.http.pipelining.maxrequests - 10
Я бы так много не ставил. Будут длинные цепочки и ты их замучаешься отслеживать, вполне достаточно дефолтных 4.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #38 : 22 мая 2007, 18:21:52 »

... вполне достаточно дефолтных 4.
Поставил и так - все равно Keep-Alive есть, а конвейера нет. Пока не получит ответ на предыдущий запрос - новый не шлет. В чем может быть заковыка?
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #39 : 22 мая 2007, 19:16:47 »

В чем может быть заковыка?
Внешний прокси имеется?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #40 : 22 мая 2007, 19:48:09 »

Внешний прокси имеется?
FireFox-HC-Proxomitron-Интернет. Без Проксомитрона тоже нет pipelining'a. Кто-нибудь его наблюдал воочию в FireFox'e? Как достичь? А то самому муторно разбираться. Только ради эксперимента надо.
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #41 : 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

Погоду может портить внешний прозрачный прокси у провайдера.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #42 : 22 мая 2007, 20:08:01 »

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

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #43 : 22 мая 2007, 20:20:44 »

Приложи, плиз свой файл конфигурации FireFox. Попробую слепо его скопировать. Мож, дело в еще каких настройках.
Сорри, но я понятия не имею в каком файле FF хранит настройки. Ткни плз пальцем.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #44 : 22 мая 2007, 20:32:46 »

Сорри, но я понятия не имею в каком файле FF хранит настройки. Ткни плз пальцем.
М-да... Я FireFox практически впервые в жизни запустил. Не издевайся. Улыбка
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #45 : 22 мая 2007, 21:32:09 »

Дык вот и я его терпеть не могу - пользуюсь только для тестов по необходимости.
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

Репутация: +7/-2
Offline Offline

Сообщений: 434

Spoiler


« Ответ #46 : 22 мая 2007, 21:55:30 »

в каком файле FF хранит настройки. Ткни плз пальцем
Тыц (prefs.js)!
« Последнее редактирование: 22 мая 2007, 22:00:11 от NothingAnother » Сообщить модератору   Записан

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #47 : 22 мая 2007, 22:09:50 »

NothingAnother, cпасибо.

* prefs.rar (1.66 Кб - загружено 23 раз.)
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #48 : 23 мая 2007, 00:11:27 »

Rick
Не получилось и с этими настройками. Странно как-то. У тебя Fox действительно шлет по одному соединению сразу пачку GET-запросов, и только потом получает на них ответы?
Сообщить модератору   Записан
Rick
Администратор
*****

Репутация: +15/-1
Offline Offline

Сообщений: 868


WWW
« Ответ #49 : 23 мая 2007, 05:10:14 »

Действительно и шлет и получает пачками.
Сообщить модератору   Записан
popkov
Beta tester
*****

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #50 : 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.
Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #51 : 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
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #52 : 14 октября 2007, 23:08:59 »

Цитировать
если один запрос тормозит, то ждет вся цепочка!
В случае запросов, тормозящих по причине ожидания "Пауз на повторные...", что если поступать таким образом:
Не выжидать эту паузу, а сразу формировать ответ "503 Service Unavailable" с заголовком Retry-After со значением, равным паузе. Мы дадим клиенту знать, через сколько времени надо перезапросить, и снимем с себя эту заботу. Клиент будет повторять запрос с определенными нами промежутками времени и то количество раз, которое установлено в его собственных настройках. При этом проблемный УРЛ не затормозит поток ответов по постоянному соединению между НС и клиентом.
« Последнее редактирование: 15 октября 2007, 00:03:08 от Михаил » Сообщить модератору   Записан
DenZzz
Модератор
*****

Репутация: +179/-11
Offline Offline

Сообщений: 5589



« Ответ #53 : 15 октября 2007, 08:57:17 »

Не выжидать эту паузу, а сразу формировать ответ "503 Service Unavailable" с заголовком Retry-After со значением, равным паузе.

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

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

Что-то не припоминаю в IE такой тонкой настройки... Подмигивающий
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #54 : 15 октября 2007, 10:56:44 »

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

Репутация: +3/-0
Offline Offline

Сообщений: 349


« Ответ #55 : 18 октября 2007, 02:14:30 »

Когда браузер работает через прокси, то он может по одному открытому с прокси соединению слать конвейером запросы на совершенно разные сайты, а прокси уже сам устанавливает соединения с нужными серверами.
Выходит, это принципиальный недостаток работы через прокси? Хотя с другой стороны, это недоработка браузера: следовало бы ему для каждого сайта устанавливать новое соединение с прокси-сервером, чтобы избежать подобных тормозов и увеличить производительность. Даже глупо как-то получается... Выходит, преимущество pipelining при открытии страницы, содержащей ссылки на разные сервера, превращается в недостаток из-за тупости браузера?
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

Репутация: +337/-14
Offline Offline

Сообщений: 5513



« Ответ #56 : 05 ноября 2007, 13:22:37 »

Поэкспериментировал. Вышеозвученное предложение не проходит. Пробовал слать ответы 503 с Retry-After и 408. Опера и ухом не ведет - перезапрашивать повторно и не пытается Грустный.
Сообщить модератору   Записан
Страниц: 1 2 3 [Все]   Вверх
  Отправить эту тему    Печать  

 
Перейти в: