#google-chrome #reload #stalled
Вопрос:
Хорошо, так что это очень странно.
Я работаю над php-скриптом, который выполняет большую работу по запросу (обработка изображений). Так что в этом нет ничего необычного, он выдает ответ за 10 секунд, иногда до 30 секунд : это длинный сценарий, и это важно для следующей части.
Регистрируя код обработки изображений, я заметил, что процессы, которые должны быть вызваны только один раз, были вызваны дважды.
Причина : Chrome отменяет первый запрос через 3 секунды, затем снова запрашивает тот же URL-адрес.
Последовательность всегда одна и та же.
- Запрошенный URL-адрес
- Отмена ровно через 3 секунды
- Автоматическая перезагрузка по схеме http
- 307 из-за сбоя на нашем сервере
- URL-адрес снова запрашивается с помощью https
- Этот загружается правильно
Отмененный запрос отображается как отложенный во вкладке «Время».
Это происходит только в Chrome (для меня 92.0.4515.107). Я не вижу такого поведения в Firefox.
Теперь, как можно воспроизвести это колдовство ? Легко, я могу воспроизводиться на 2 разных серверах у 2 разных поставщиков (GCE и OVH), и у него есть странная связь с продолжительностью первоначального запроса на этот URL-адрес.
- Создайте новый php-скрипт на своем веб-сервере, содержащий только
<?php sleep(10); echo 'Done'; ?>
- Вызовите URL-адрес вашего скрипта в Chrome
- Первый звонок будет успешным
- Но все последующие вызовы, безусловно, вызовут «последовательность».
Проверив журналы Chrome, я пришел к выводу, что здесь есть ссылка на HTTP2_SESSION
t=235805 [st= 5] HTTP_TRANSACTION_SEND_REQUEST [dt=1]
t=235806 [st= 6] HTTP_TRANSACTION_HTTP2_SEND_REQUEST_HEADERS
--> :method: GET
:authority: my.server.com
:scheme: https
:path: /admin/ot/test1.php
pragma: no-cache
cache-control: no-cache
authorization: [38 bytes were stripped]
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
sec-fetch-site: none
sec-fetch-mode: navigate
sec-fetch-user: ?1
sec-fetch-dest: document
accept-encoding: gzip, deflate, br
accept-language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
cookie: [409 bytes were stripped]
t=235806 [st= 6] -HTTP_TRANSACTION_SEND_REQUEST
t=235806 [st= 6] HTTP_TRANSACTION_READ_HEADERS [dt=3012]
t=238818 [st=3018] CANCELLED
t=238818 [st=3018] -REQUEST_ALIVE
В приведенном выше запросе URL_REQUEST мы мало что узнаем. Мы просто видим «ОТМЕНЕНО» через 3 секунды.
Но HTTP2_SESSION показывает странную ошибку :
27185: HTTP2_SESSION
my.server.com:443 (DIRECT)
Start Time: 2021-07-22 17:13:09.460
t=222444 [st= 0] HTTP2_SESSION [dt=28616 ]
--> host = "my.server.com:443"
--> proxy = "DIRECT"
t=222444 [st= 0] HTTP2_SESSION_INITIALIZED
--> protocol = "h2"
--> source_dependency = 27181 (SOCKET)
t=222445 [st= 1] HTTP2_SESSION_SEND_SETTINGS
--> settings = ["[id:1 (SETTINGS_HEADER_TABLE_SIZE) value:65536]","[id:3 (SETTINGS_MAX_CONCURRENT_STREAMS) value:1000]","[id:4 (SETTINGS_INITIAL_WINDOW_SIZE) value:6291456]","[id:6 (SETTINGS_MAX_HEADER_LIST_SIZE) value:262144]"]
t=222445 [st= 1] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 15663105
--> window_size = 15728640
t=222445 [st= 1] HTTP2_SESSION_SEND_WINDOW_UPDATE
--> delta = 15663105
--> stream_id = 0
t=222446 [st= 2] HTTP2_SESSION_SEND_HEADERS
--> exclusive = true
--> fin = true
--> has_priority = true
--> :method: GET
:authority: my.server.com
:scheme: https
:path: /admin/ot/test1.php
pragma: no-cache
cache-control: no-cache
authorization: [38 bytes were stripped]
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
sec-fetch-site: none
sec-fetch-mode: navigate
sec-fetch-user: ?1
sec-fetch-dest: document
accept-encoding: gzip, deflate, br
accept-language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
cookie: [409 bytes were stripped]
--> parent_stream_id = 0
--> source_dependency = 27179 (HTTP_STREAM_JOB)
--> stream_id = 1
--> weight = 256
t=222471 [st= 27] HTTP2_SESSION_RECV_SETTINGS
t=222471 [st= 27] HTTP2_SESSION_SEND_SETTINGS_ACK
t=222471 [st= 27] HTTP2_SESSION_RECV_SETTING
--> id = "3 (SETTINGS_MAX_CONCURRENT_STREAMS)"
--> value = 100
t=222471 [st= 27] HTTP2_SESSION_UPDATE_STREAMS_SEND_WINDOW_SIZE
--> delta_window_size = 983041
t=222471 [st= 27] HTTP2_SESSION_RECV_SETTING
--> id = "4 (SETTINGS_INITIAL_WINDOW_SIZE)"
--> value = 1048576
t=222471 [st= 27] HTTP2_SESSION_RECV_SETTING
--> id = "6 (SETTINGS_MAX_HEADER_LIST_SIZE)"
--> value = 65536
t=222471 [st= 27] HTTP2_SESSION_RECV_WINDOW_UPDATE
--> delta = 983041
--> stream_id = 0
t=222471 [st= 27] HTTP2_SESSION_UPDATE_SEND_WINDOW
--> delta = 983041
--> window_size = 1048576
t=222471 [st= 27] HTTP2_SESSION_RECV_SETTINGS_ACK
t=232550 [st=10106] HTTP2_SESSION_RECV_HEADERS
--> fin = false
--> :status: 200
date: Thu, 22 Jul 2021 15:13:09 GMT
vary: Accept-Encoding
content-encoding: gzip
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-ua-compatible: IE=Edge
x-frame-options: sameorigin
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
content-length: 24
content-type: text/html; charset=CP1252
cache-control:
age: 0
x-cache: NOT CACHABLE
accept-ranges: bytes
via: 1.1 google
alt-svc: clear
--> stream_id = 1
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -1
--> window_size = 15728639
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 1
--> window_size = 15728640
t=232550 [st=10106] HTTP2_SESSION_RECV_DATA
--> fin = false
--> size = 24
--> stream_id = 1
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -24
--> window_size = 15728616
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -110
--> window_size = 15728506
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 110
--> window_size = 15728616
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -1
--> window_size = 15728615
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 1
--> window_size = 15728616
t=232550 [st=10106] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -71
--> window_size = 15728545
t=232551 [st=10107] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 71
--> window_size = 15728616
t=232551 [st=10107] HTTP2_SESSION_RECV_DATA
--> fin = true
--> size = 0
--> stream_id = 1
t=232551 [st=10107] HTTP2_SESSION_PING
--> is_ack = false
--> type = "received"
--> unique_id = 0
t=232551 [st=10107] HTTP2_SESSION_PING
--> is_ack = true
--> type = "sent"
--> unique_id = 0
t=232552 [st=10108] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 24
--> window_size = 15728640
t=235806 [st=13362] HTTP2_SESSION_SEND_HEADERS
--> exclusive = true
--> fin = true
--> has_priority = true
--> :method: GET
:authority: my.server.com
:scheme: https
:path: /admin/ot/test1.php
pragma: no-cache
cache-control: no-cache
authorization: [38 bytes were stripped]
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
sec-fetch-site: none
sec-fetch-mode: navigate
sec-fetch-user: ?1
sec-fetch-dest: document
accept-encoding: gzip, deflate, br
accept-language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
cookie: [409 bytes were stripped]
--> parent_stream_id = 0
--> source_dependency = 27212 (HTTP_STREAM_JOB)
--> stream_id = 3
--> weight = 256
t=238818 [st=16374] HTTP2_SESSION_SEND_RST_STREAM
--> description = ""
--> error_code = "8 (CANCEL)"
--> stream_id = 3
t=238846 [st=16402] HTTP2_SESSION_SEND_HEADERS
--> exclusive = true
--> fin = true
--> has_priority = true
--> :method: GET
:authority: my.server.com
:scheme: https
:path: /admin/ot/test1.php
pragma: no-cache
cache-control: no-cache
authorization: [38 bytes were stripped]
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
sec-fetch-site: none
sec-fetch-mode: navigate
sec-fetch-user: ?1
sec-fetch-dest: document
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
accept-encoding: gzip, deflate, br
accept-language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
cookie: [409 bytes were stripped]
--> parent_stream_id = 0
--> source_dependency = 27225 (HTTP_STREAM_JOB)
--> stream_id = 5
--> weight = 256
t=249924 [st=27480] HTTP2_SESSION_RECV_HEADERS
--> fin = false
--> :status: 200
date: Thu, 22 Jul 2021 15:13:25 GMT
vary: Accept-Encoding
content-encoding: gzip
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-ua-compatible: IE=Edge
x-frame-options: sameorigin
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
content-length: 24
content-type: text/html; charset=CP1252
cache-control:
age: 0
x-cache: NOT CACHABLE
accept-ranges: bytes
via: 1.1 google
alt-svc: clear
--> stream_id = 5
t=249924 [st=27480] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -1
--> window_size = 15728639
t=249924 [st=27480] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 1
--> window_size = 15728640
t=249924 [st=27480] HTTP2_SESSION_RECV_DATA
--> fin = false
--> size = 24
--> stream_id = 5
t=249924 [st=27480] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -24
--> window_size = 15728616
t=249925 [st=27481] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -94
--> window_size = 15728522
t=249925 [st=27481] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 94
--> window_size = 15728616
t=249925 [st=27481] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -1
--> window_size = 15728615
t=249925 [st=27481] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 1
--> window_size = 15728616
t=249925 [st=27481] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = -104
--> window_size = 15728512
t=249925 [st=27481] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 104
--> window_size = 15728616
t=249925 [st=27481] HTTP2_SESSION_RECV_DATA
--> fin = true
--> size = 0
--> stream_id = 5
t=249925 [st=27481] HTTP2_SESSION_PING
--> is_ack = false
--> type = "received"
--> unique_id = 2
t=249925 [st=27481] HTTP2_SESSION_PING
--> is_ack = true
--> type = "sent"
--> unique_id = 2
t=249927 [st=27483] HTTP2_SESSION_UPDATE_RECV_WINDOW
--> delta = 24
--> window_size = 15728640
Прохождение :
- Первоначальный запрос (тот, который сработал) начинается с st=0, заканчивается st=10106 (10 секунд сна)
- Второй запрос (тот, который автоматически отменяется) начинается с st=13362, заканчивается st=16374 (3 секунды спустя) с этим
t=238818 [st=16374] HTTP2_SESSION_SEND_RST_STREAM
--> description = ""
--> error_code = "8 (CANCEL)"
--> stream_id = 3
- Затем запрос перезагружается при st=16402 и, наконец, возвращается при st=27480 с задержкой сна 10 секунд
Я честно не знаю, что с этим делать. Это можно легко воспроизвести, но я не могу понять, почему это происходит.
Chrome в основном используется в моей компании для наших внутренних инструментов, поэтому я уверен, что он 2 раза подряд перезагружает URL-адрес для тяжелой обработки по загадочным причинам.
Любая помощь будет очень признательна.
О, и я отключил все расширения, которые у меня есть. Это не помогает. В любом случае я не вижу никаких упоминаний о каком-либо вмешательстве расширений в журналы Chrome.
Комментарии:
1. Рад найти этот пост! Вы подали сообщение об ошибке в Chrome? Я ТОЛЬКО что обновил Chrome до версии 93.0.4577.82, и я все еще могу повторить это как в примере домена ниже, так и в своем собственном домене, где впервые возникла проблема.
2. Поданный отчет об ошибке: bugs.chromium.org/p/chromium/issues/detail?id=1251065
3. Потрясающе! Та же проблема и здесь! Это настоящий кошмар. Не могу обойти это!
4. @быстрые рефлексы ссылка не работает
5. Это связано с тем, что это проблема безопасности, которую могут видеть только плакат и команда chromium, но это подтверждено, и они исправят ее
Ответ №1:
Я думаю, что эта проблема может быть воспроизведена в любом домене, который реагирует с задержкой более 3 секунд и с любой технологией на стороне сервера. Я полагаю, что это проблема с хромом. Я воспроизвел его с ASP.net Хостинг MVC и AWS Beanstalk. Я также воспроизвел его по-другому на https://example.com/ когда вы регулируете соединение, чтобы снизить время отклика.
Чтобы воспроизвести его (в Chrome версии 92.0.4515.159 (Официальная сборка) (64-разрядная версия)):
- Откройте Инструменты разработки и добавьте Профиль очень медленного регулирования сети следующим образом
- перейдите по ссылке, вставив: https://example.com/ -> это должно сработать
- обновите страницу, нажав F5 -> это тоже должно сработать
- теперь, очень важно, просто дважды щелкните адресную строку, чтобы увидеть: и затем нажмите enter. Теперь chrome ведет себя по-другому, и сначала он пробует URL-адрес https, и если в течение 3 секунд нет ответа, он перенаправляется на http. Отмененный запрос-это тот, о котором я говорю.
Может быть, это поможет sb решить проблему.
Комментарии:
1. Я все еще могу воспроизвести это в новейшем Chrome (93.0.4577.82). Если я установлю задержку на 4000 мс и 1000 кб вверх и вниз, я увижу это понижение. ОЧЕНЬ странно видеть такие понижения от https до http в хорошо известном браузере во времена HSTS и других попыток избежать http-соединений. Поведение, отсутствующее в Firefox. Интересно, это ошибка или функция?
2. Самая странная вещь на свете, и это происходит уже очень давно!
3. Что еще более странно, так это то, что для некоторых учетных записей он воспроизводится, а для других-нет. На той же машине.
Ответ №2:
Для той же проблемы я не обнаружил такой проблемы, когда использовал Firefox. Сначала я заподозрил, что это проблема конфигурации на стороне сервера. Позже я обнаружил, что проблема осталась после изменения окружающей среды. Наконец, он был расположен на стороне браузера, но я не знаю, в чем конкретная причина
Комментарии:
1. Если вы обнаружите причину проблемы, пожалуйста, дайте мне знать
2. После обновления до версии 93 проблема больше не возникает. Я думаю, что эта проблема должна быть ошибкой в Google версии 92
3. По-прежнему отображается для меня в Chrome 93.0.4577.82
4. Для меня все еще появляется в chrome 94
5. Извините, я обнаружил, что эта проблема не решена, но после обновления версии вероятность возникновения проблемы снизится