+  HandyCache форум
|-+  Главная категория» Общие вопросы» Баг - "502 Bad Gateway" и неверные проценты в мониторе
Имя пользователя:
Пароль:
Страниц: [1] 2  Все   Вниз
  Отправить эту тему    Печать  
Автор Тема: Баг - "502 Bad Gateway" и неверные проценты в мониторе  (Прочитано 24412 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« : 03 февраля 2007, 02:54:09 »

Если браузер оставляет соединение с сервером (в запросе присутствует Connection: Keep-Alive), то по этому соединению грузятся последовательно несколько файлов. Грузятся должным образом, но в мониторе при этом нормально отображается лишь первый, все остальные - "502 Bad Gateway" и чудовищные проценты.
Воочию увидеть можно так: отключить для надежности весь кэш (все списки и чтение из кэша) и посмотреть, что пишет монитор при заходе на http://handycache.ru



Отлично! Исправлено в версии HC 1.0 RC1 !
« Последнее редактирование: 11 января 2008, 11:23:20 от DenZzz » Сообщить модератору   Записан
Rick
Администратор
*****

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

Сообщений: 868


WWW
« Ответ #1 : 03 февраля 2007, 07:03:56 »

Михаил
Не удается повторить. Все нормально грузится, никаких 502. Страница 200 ОК gzip, остальное 304.

Цитировать
чудовищные проценты
Чудовищно большие? Чудовищно низкие? Процент вообще не меняется - чтение из кэша ведь запрещено, а одной странички в 7К (примерно столько весит главная страница) маловато чтобы повлиять на набранный ранее процент.

Добавлено:
Кстати у меня Keep-Alive нет ( Непонимаю ) - поэтому и повторить не получается.
« Последнее редактирование: 03 февраля 2007, 07:51:16 от Rick » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #2 : 03 февраля 2007, 10:53:02 »

Rick
Чтоб Опера стала посылать Keep-Alive надо включить в настройках прокси "Включить HTTP 1.1 для прокси-сервера".
Для чистоты эксперимента надо также выйти из Оперы и зайти снова, чтобы вызов сайта был в текущем сеансе не повторным, а первым. Тогда Опера не будет вставлять If-Modified-Since и "304" не вылезет. Кэш Оперы отключен.
Попробуй.

Цитировать
Процент вообще не меняется
Я имею ввиду значение в колонке "%" в мониторе, а не процент экономии. Оно прыгает от чудовищно больших (несколько тысяч) до малых значений. При этом все скачивается нормально - страдает только оттображение этого в мониторе.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #3 : 03 февраля 2007, 11:27:36 »

От какой даты у тебя exe-шник? Если не от 2 января, скачай снова. Если последний, включи опцию Отладочная информация, сделай лог и пришли мне на мыло (mai62()mail.ru).
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #4 : 03 февраля 2007, 13:00:47 »

mai62
НС от 2.01.07. Выслал лог.
По-моему, раньше лог писался в файл log.txt. Сейчас хоть убей, не могу этого добиться - файл не создается. При этом по кнопке "смотреть лог" он показывается полностью. При выходе/входе в НС лог очищается, т.к. файла нет.
Подскажи, плиз, должен ли создаваться файл лога? Если да, как этого добиться.
Сообщить модератору   Записан
Rick
Администратор
*****

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

Сообщений: 868


WWW
« Ответ #5 : 03 февраля 2007, 13:07:30 »

RClick в окне лога - сохранить в log.txt
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #6 : 03 февраля 2007, 13:17:18 »

Rick
Спасибо. А ларчик просто открывался... Подмигивающий
Почему-то упорно сидело в голове, что пишется в файл само.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #7 : 04 февраля 2007, 21:26:46 »

Похоже у твоей Опера проснулся pipelining. Про него можно почитать,
например, здесь:
http://operawiki.info/HttpProtocol9
http://en.wikipedia.org/wiki/HTTP_pipelining
http://mozilla.org/projects/netlib/http/pipelining-faq.html

НС pipelining не поддерживает, из-за этого и глюки. Как я понял, в
Опера выключить pipelining можно только вместе с поддержкой http1.1
для прокси. Попробуй это сделать.
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

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

Сообщений: 434

Spoiler


« Ответ #8 : 04 февраля 2007, 21:47:15 »

НС pipelining не поддерживает
А что будет, если браузер не знает об этой "неподдержке" и ему указано задействовать pipelining over proxy?
Сообщить модератору   Записан

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

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

Сообщений: 6383


« Ответ #9 : 04 февраля 2007, 23:37:48 »

Как один из вариантов будут глюки, описанные Михаил. Думаю также жалобы пользователей FF и Opera на перепутанные картинки на страницах - одно из проявлений этой проблемы.
Что делать? Буду работать над реализацией поддержки pipelining. К сожалению, мне самому пока не удалось увидеть pipelining живьем ни в FF, ни в Opera (может оттого, что сижу за цепочкой из двух сквидов). А без этого сложно будет отлаживать.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #10 : 05 февраля 2007, 00:03:35 »

mai62
Цитировать
в Опера выключить pipelining можно только вместе с поддержкой http1.1
для прокси. Попробуй это сделать.
Это безусловно решит вопрос. Но тогда я потеряю основные преимущества HTTP 1.1 (постоянные соединения), которые на DSL и спутниковом интернете дают весьма существенный выигрыш во времени.
К чему, собственно, эта тема у меня зародилась: налицо проблемы с поддержкой НС постоянных соединений HTTP 1.1. Это влечет значительные относительные потери времени на скоростных подключениях (на dial-up потери такие же в абсолютном выражении, но относительно невелики). Может, есть смысл обсудить необходимость добавления в программу такой поддержки (причем не только пассивной, но и активной)? Под пассивной я имею ввиду корректную обработку уже поступивших запросов, применяющих постоянное соединение. Под активной - если этого не делает в своем запросе клиент, то создавать собственными силами постоянное соединение, если сервер поддерживает HTTP 1.1.
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #11 : 05 февраля 2007, 00:52:15 »

Ситуация с производительностью HTTP 1.1 и HTTP 1.0 не так проста как кажется на первый взгляд. Посмотри, например, это http://w3.org/Protocols/HTTP/Performance/Pipeline.html.
Поддержка постоянных соединений HTTP 1.1 в НС есть, можешь поюзать IE (в нем есть постоянные соединения HTTP 1.1, но нет pipelining) и убедиться. С тем, что нужно работать над поддержкой pipelining, я согласен и уже писал об этом выше.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #12 : 05 февраля 2007, 01:52:18 »

mai62
Спасибо, статья познавательная.
Проверил: IE действительно использует постоянное соединение без конвейера, и НС ведет себя при этом адекватно. Опера же все гонит через конвейер.
IE умудряется, имея открытое ожидающее постоянное соединение, открывать с этим же сервером другое!
Хорошо б продумать вопрос о добавлении в НС возможности самостоятельно организовывать pipelining невзирая на то, как хочет организовывать взаимодействие с сервером браузер. Или эта мысль уже охватывается твоими словами о планируемой поддержке pipelining?
« Последнее редактирование: 05 февраля 2007, 02:22:46 от Михаил » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #13 : 05 февраля 2007, 03:34:45 »

mai62
Цитировать
К сожалению, мне самому пока не удалось увидеть pipelining живьем ни в FF, ни в Opera (может оттого, что сижу за цепочкой из двух сквидов). А без этого сложно будет отлаживать.
По идее, если эти сквиды не отвечают "HTTP/1.0" и не закрывают самовольно соединение, то Опере больше ничего и не надо. Должна pipelin-ить. По крайне мере, сборка 8713 у меня это делает. Другие необходимые условия: 1. "Запоминать посещенные адреса" в Настройки/Дополнительные/История должно быть ненулевым (соответственно, URL уже должен быть там запомнен, для чего его необходимо по крайней мере разок-другой предварительно вызвать). 2. Должна стоять галка, разрешающая использование HTTP 1.1 для прокси-сервера в Настройки/Дополнительные/Сеть/Прокси-серверы.
Кстати, если сделаешь для целей лабораторного исследования ответ Опере от НС "HTTP/1.1" вместо "HTTP/1.0" и НС не будет выдавать "Proxy-connection: close", то Опера, я думаю, должна пытаться pipelin-ить и при соединении с НС, когда в НС включен автономный режим.
« Последнее редактирование: 05 февраля 2007, 03:57:33 от Михаил » Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #14 : 05 февраля 2007, 12:31:45 »

mai62
Цитировать
Ситуация с производительностью HTTP 1.1 и HTTP 1.0 не так проста как кажется на первый взгляд. Посмотри, например, это http://w3.org/Protocols/HTTP/Performance/Pipeline.html.
Еще вот что хотел сказать. Производительность HTTP 1.1 выше по определению. Другое дело - как организовать работу по протоколу. В статье сравнивается параллельная загрузка по HTTP 1.0 с последовательной по HTTP 1.1. Тут уж HTTP 1.0 естественно опережает. Но не благодаря своим достоинствам, а вследствие сравнения различных способов организации взаимодействия с сервером. Если б сравнивать последовательную загрузку в HTTP 1.0 с такой же, но через постоянное соединение HTTP 1.1 (т.е. поставить их в одинаковые условия), то сравнение было б явно в пользу последнего.
А вот почему IE организует при использовании HTTP 1.1 именно последовательную загрузку (т.е. самый медленный вариант) - для меня вопрос.  Непонимаю
Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #15 : 05 февраля 2007, 13:17:04 »

Михаил
Цитировать
По идее, если эти сквиды не отвечают "HTTP/1.0" и не закрывают самовольно соединение...
Вот так у меня выглядит обмен
Цитировать
GET http://handycache.ru/images/stories/info80.png HTTP/1.0
User-Agent: Opera/9.02 (Windows NT 5.1; U; en)
Host: handycache.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://handycache.ru/component/option,com_frontpage/Itemid,1/
Cookie: PHPSESSID=913c88d52c0dd315789bda49eb9d1092; dfaf8b958d32999e00affd4aedd4f5b1=4a5a5392a0223f09c18dab9e3c44b848
Cookie2: $Version=1
Pragma: no-cache
Cache-Control: no-cache
Proxy-Connection: close

HTTP/1.0 200 OK
Date: Mon, 05 Feb 2007 09:59:07 GMT
Server: Apache/1.3.33 (Unix) mod_fastcgi/2.4.0 FrontPage/5.0.2.2623 PHP/4.3.10 mod_gzip/1.3.19.1a mod_ssl/2.8.22 OpenSSL/0.9.7b rus/PL30.20
Last-Modified: Mon, 01 Jan 2007 16:40:54 GMT
ETag: "218ca5-566-45993996"
Accept-Ranges: bytes
Content-Length: 1382
Content-Type: image/png
X-Cache: MISS from unlim
X-Cache: MISS from ns1.scenar.com.ru
Proxy-Connection: close
Почему-то в запросе Опера ставит HTTP/1.0 хотя в настройках стоит 1.1 и все перечисленные тобой условия соблюдены. Пишут, что в Опере pipelining управляется каким-то эвристическим алгоритмом, возможно она раз и навсегда решила, что тут ловить нечего и юзает 1.0.
Цитировать
если этого не делает в своем запросе клиент, то создавать собственными силами постоянное соединение, если сервер поддерживает HTTP 1.1
В эти дебри я не полезу.
Цитировать
Производительность HTTP 1.1 выше по определению.
Правильнее сказать потенциально выше, при определенных условиях.
Сообщить модератору   Записан
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #16 : 05 февраля 2007, 15:00:33 »

mai62
Цитировать
Почему-то в запросе Опера ставит HTTP/1.0 хотя в настройках стоит 1.1 и все перечисленные тобой условия соблюдены
Приведенный тобой лог отражает запрос одного файла png без вложенных, pipelin-ить тут заведомо нечего. Я задавал http://handycache.ru. Опера запрашивает его по HTTP 1.0 и узнает из ответа сервера, что сервером поддерживается HTTP 1.1. Тогда начиная со следующего файла с этого сервера она открывает pipeline-соединение.
Озабочивает другое: у тебя ответ сервера - "HTTP 1.0". У меня же отвечает "HTTP 1.1". Видимо, это то, чего я опасался: сквиды зачем-то меняют в ответе сервера 1.1 на 1.0.
Не знаю также, поддерживает ли должным образом pipelining используемая тобой версия 9.02 Оперы. Я пробовал на 9.2 указанной выше тестовой сборки. Должен сказать, что конвейер она организует тоже далеко не оптимальным образом (эвристический алгоритм видать еще сырой). Но с тем безобразием, которое творит IE, это все равно не сравнить.

Цитировать
В эти дебри я не полезу
Не надо лезть. Лишь бы это можно было организовать другим при помощи разрабатываемой тобой плагинной архитектуры. Я, например, с удовольствием попробовал бы сделать это сам. Тем более, что при использовании pipelining время взаимодействия с удаленным сервером уменьшается в разы.
« Последнее редактирование: 05 февраля 2007, 15:05:03 от Михаил » Сообщить модератору   Записан
mai62
Автор HC
*****

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

Сообщений: 6383


« Ответ #17 : 05 февраля 2007, 19:28:17 »

Михаил
Цитировать
Приведенный тобой лог отражает запрос одного файла png без вложенных
Я привел один для примера, остальные такие же.
Цитировать
Не надо лезть. Лишь бы это можно было организовать другим при помощи разрабатываемой тобой плагинной архитектуры. Я, например, с удовольствием попробовал бы сделать это сам.
ОК
Сообщить модератору   Записан
NothingAnother
Beta tester
*****

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

Сообщений: 434

Spoiler


« Ответ #18 : 05 февраля 2007, 21:02:03 »

Опера запрашивает его по HTTP 1.0 и узнает из ответа сервера, что сервером поддерживается HTTP 1.1. Тогда начиная со следующего файла с этого сервера она открывает pipeline-соединение
А как это зависит от параметра "Disable HTTP OPTIONS requests"? Краткая аннотация: "Avoid sending "options" header to proxies", но как это отражается на взаимодействии с HC?
Сообщить модератору   Записан

Мы тоже не всего читали Шнитке!..
© В. Вишневский
Михаил
Gold beta tester
*****

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

Сообщений: 5513



« Ответ #19 : 05 февраля 2007, 21:38:08 »

NothingAnother
Цитировать
А как это зависит от параметра "Disable HTTP OPTIONS requests"? Краткая аннотация: "Avoid sending "options" header to proxies", но как это отражается на взаимодействии с HC?
Метод OPTIONS и НС мне подружить не удалось изначально (при отключенной опции Опера категорически отказывалась выходить в интернет через НС). Поэтому эта опция у меня включена. Даже не знаю, работает ли она в связке с НС теперь.
В глубинные причины этого не вникал. Надо, кстати, сделать это.
« Последнее редактирование: 05 февраля 2007, 21:49:38 от Михаил » Сообщить модератору   Записан
Страниц: [1] 2  Все   Вверх
  Отправить эту тему    Печать  

 
Перейти в: