New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 710042 link

Starred by 2 users

Issue metadata

Status: Duplicate
Merged: issue 655585
Owner: ----
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

Google Canary Server Push not working

Reported by umur...@gmail.com, Apr 10 2017

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36

Example URL:

Steps to reproduce the problem:
1. Open Google Chrome Canary latest official build 
2. Open Developer Tools
3. Go to https://http2.golang.org/gophertiles?latency=0

What is the expected behavior?

What went wrong?
There is a server push issue, tried own examples and one from golang on https://http2.golang.org/gophertiles?latency=0. Same TCP connection, no server push. Worked days ago and still works on Google Chrome 57.0.2987.133.

Did this work before? N/A 

Chrome version: 59.0.3067.0  Channel: stable
OS Version: OS X 10.12.4
Flash Version:
 
golang.png
194 KB View Download

Comment 1 by mmenke@chromium.org, Apr 10 2017

Components: -Internals>Network Internals>Network>HTTP2
I assume this is HTTP/2 and not QUIC.  Could you please provide an about:net-internals or about:net-export log?  instructions:  https://sites.google.com/a/chromium.org/dev/for-testers/providing-network-details

Comment 2 by mmenke@chromium.org, Apr 10 2017

Labels: Needs-Feedback

Comment 3 by umur...@gmail.com, Apr 10 2017

Yes, it should be HTTP/2.
I have attached net-internals/export
Let me know if you need anything else.
net-internals-log.json
1.7 MB View Download
Project Member

Comment 4 by sheriffbot@chromium.org, Apr 10 2017

Cc: mmenke@chromium.org
Labels: -Needs-Feedback
Thank you for providing more feedback. Adding requester "mmenke@chromium.org" to the cc list and removing "Needs-Feedback" label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 5 by ajha@chromium.org, Apr 11 2017

Labels: Needs-Triage-M59
Labels: TE-NeedsTriageHelp

Comment 7 by b...@chromium.org, Apr 13 2017

Labels: Needs-Feedback
The net-internals log does not contain any HTTP2_SESSION_RECV_PUSH_PROMISE events, meaning that Chrome did not receive any PUSH_PROMISE frames.  Is it a server configuration issue?  Do you have access to server-side debug logs to check if any PUSH_PROMISE frames were actually sent?

Comment 8 by umur...@gmail.com, Apr 17 2017

You are right, it is not a Server Push Event, but actually the requests has to be sent asynchronously. 

It is not my server, as you can see, it is an example of Brad Fitzpatrick from Google Golang. I've attached an image, which was taken from a Chrome 57.0.2987.133. The images are loaded asynchronously, in which the screenshot of Chrome 59.0.3067.0 looks more like it is always building 6 TCP connections, which results in much slower loading process.
Screen Shot 2017-04-17 at 13.35.36.png
256 KB View Download
Project Member

Comment 9 by sheriffbot@chromium.org, Apr 17 2017

Cc: b...@chromium.org
Labels: -Needs-Feedback
Thank you for providing more feedback. Adding requester "bnc@chromium.org" to the cc list and removing "Needs-Feedback" label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 10 by b...@chromium.org, Apr 17 2017

Cc: rdsmith@chromium.org csharrison@chromium.org
Re #8: Thank you for your response.  Requests are held back by ResourceScheduler, but they should not be.  cc'ing relevant folks.

In net-internals, there is only one HTTP2_SESSION.  However, requests seem to be sent in bursts of six at a time.  The last HTTP2_SESSION_SEND_HEADERS event is for stream 3261, and has source_dependency 12093.  That is an HTTP_STREAM_JOB, with source_dependency 12092: an HTTP_STREAM_JOB_CONTROLLER, with source_depencendy 11591: a URL_REQUEST, which shows that the request has been delayed by more than four and a half seconds:

t= 352 [st=   0]   +DELEGATE_INFO  [dt=4633]
                    --> delegate_blocked_by = "ResourceScheduler"
t=4984 [st=4632]      RESOURCE_SCHEDULER_REQUEST_STARTED
                      --> trigger = "COMPLETION_POST_BODY"
t=4985 [st=4633]   -DELEGATE_INFO

RESOURCE_SCHEDULER_REQUEST_STARTED is logged in content::ResourceScheduler::Client::StartRequest().  So ResourceScheduler is the one holding back requests, though it really should not over an HTTP/2 connection.

Comment 11 by b...@chromium.org, Apr 17 2017

That being said, I am not able to locally reproduce it with my 59.0.3067.0 (Official Build) dev (64-bit).
Cc: jkarlin@chromium.org
+jkarlin made H2 requests throttled as well for performance reasons so this is expected behavior afaik.

Comment 13 by umur...@gmail.com, Apr 19 2017

Can't explain why it is not reproducible for you. Still facing the problem.
Mergedinto: 655585
Status: Duplicate (was: Unconfirmed)
Correct, this is expected behavior. Throttling in the manner above results in pages reaching time-to-first-contentful-paint and time-to-first-meaningful-paint considerably faster. 

Comment 15 by umur...@gmail.com, Apr 19 2017

Still, it does not explain why I have two completely different results in two different Chrome versions. Anyway,...
Ah, that's because the feature is just being launched. It's starting in canary but hasn't made its way to stable yet.

Sign in to add a comment