Closed icing closed 5 years ago
Thanks, I'll take a look. It has been bugging me for a while but I haven't done anything about it yet. My guess is that requests issues in the same millisecond get sorted randomly since they are sorted by start time and I can add stream ID as a second-order sort.
FWIW, for this specific test it doesn't matter. The last 2 requests are the important ones and are guaranteed to be sorted correctly since they are intentionally issued after a delay (and are serialized).
The actual ordering should be fixed now. I'm keeping the full-resolution timestamps for sorting purposes.
That said, I was wrong about it being the last 2 requests that are always the interesting ones. That assumes a max concurrent stream count that is sufficiently large. In this case it looks like it is limited to 10 concurrent streams so Chrome re-prioritizes the requests before asking for them.
Interesting...It looks like Chrome is limiting the number of requests it sends when in 3G mode. It doesn't do this when on a fast connection.
And investigating a little deeper, it is not doing this by throttling SETTINGS_MAX_CONCURRENT_STREAMS as that is still set to 1000 in both cases from the Browser and 100 from the server when using Apache.
It didn't used to do this when I tested Apache previously, back in November: https://twitter.com/tunetheweb/status/1065699332064780289 https://www.webpagetest.org/result/181122_5J_14327e2f4c3b24eee9bfa910a8dbb6ab/ So this is something new.
And it doesn't do it in Chrome Canary either: https://www.webpagetest.org/result/190319_VT_7aa5dfe3dc40a71ff8e4b45b25fb3e49/
So something is broken in stable Chrome. Which reminds me of something I saw you and Jake were talking about on Twitter: https://twitter.com/patmeenan/status/1108059970732474368.
My guess is that it's something the emerging markets team is experimenting with (I think I remember something along those lines as an experiment in the loader). Kind of sucks to have another wildcard at play but hopefully it works well in the wild at-large.
This is the experiment I was thinking about: https://bugs.chromium.org/p/chromium/issues/detail?id=836552
Looks like it has been live for a few builds now so not sure why it is just showing up now. Maybe the link speed estimator is getting an estimate sooner than it was before.
Cool! Many thanks @pmeenan! Now I get predictable waterfalls and analysing this is much easier!
Summary
Thanks for this wonderful test. I just had to check my Apache implementation with it.
The nice waterfall pictures rendered have the shortcoming that stream id's are not reflected in the order presented in the picture. For some tests, this works out, for others the waterfall is more a sawtooth - although basically the same things happened.
That might be a shortcoming of webpagetest itself. Can you recommend a viewer that does this better? Maybe using the .har file one can export? Would make analyzing this much easier.
Server / CDN etc.
From: Nottingham, East Midlands, UK - Chrome - 3G 19.3.2019, 10:12:53
Browser
Chrome
Link to WebPageTest result
https://www.webpagetest.org/result/190319_XT_ef9491d8583f3eaef8070c33f73ca6e3/9/details/#waterfall_view_step1
Link to upstream bug report