Understanding Chrome network log "Stalled" state

Google ChromeHttpHttprequestGoogle Chrome-Devtools

Google Chrome Problem Overview


I've a following network log in chrome:

network log

I don't understand one thing in it: what's the difference between filled gray bars and transparent gray bars.

Google Chrome Solutions


Solution 1 - Google Chrome

Google gives a breakdown of these fields in the Evaluating network performance section of their DevTools documentation.

Excerpt from Resource network timing:

> ### Stalled/Blocking > Time the request spent waiting before it could be sent. This time is inclusive of any time spent in proxy negotiation. Additionally, this time will include when the browser is waiting for an already established connection to become available for re-use, obeying Chrome's maximum six TCP connection per origin rule.

(If you forget, Chrome has an "Explanation" link in the hover tooltip and under the "Timing" panel.)

Basically, the primary reason you will see this is because Chrome will only download 6 files per-server at a time and other requests will be stalled until a connection slot becomes available.

This isn't necessarily something that needs fixing, but one way to avoid the stalled state would be to distribute the files across multiple domain names and/or servers, keeping CORS in mind if applicable to your needs, however HTTP2 is probably a better option going forward. Resource bundling (like JS and CSS concatenation) can also help to reduce amount of stalled connections.

Solution 2 - Google Chrome

DevTools: [network] explain empty bars preceeding request

>Investigated further and have identified that there's no significant difference between our Stalled and Queueing ranges. Both > are calculated from the delta's of other timestamps, rather than > provided from netstack or renderer. >
> --- >
> Currently, if we're waiting for a socket to become available: >
> - we'll call it stalled if some proxy negotiation happened > - we'll call it queuing if no proxy/ssl work was required.

Solution 3 - Google Chrome

https://developers.google.com/web/tools/chrome-devtools/network-performance/understanding-resource-timing

This comes from the official site of Chome-devtools and it helps. Here i quote:

>

  • Queuing If a request is queued it indicated that:
  • The request was postponed by the rendering engine because it's considered lower priority than critical resources (such as scripts/styles). This often happens with images.
  • The request was put on hold to wait for an unavailable TCP socket that's about to free up.
  • The request was put on hold because the browser only allows six TCP connections per origin on HTTP 1. Time spent making disk cache entries (typically very quick.)
  • Stalled/Blocking Time the request spent waiting before it could be sent. It can be waiting for any of the reasons described for Queueing. Additionally, this time is inclusive of any time spent in proxy negotiation.

Solution 4 - Google Chrome

Since many people arrive here debugging their slow website I would like to inform you about my case which none of the google explanations helped to resolve. My huge stalled times (sometimes 1min) were caused by Apache running on Windows having too few worker threads to handle the connections, therefore they were being queued.

This may apply to you if you apache log has following note:

Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

This issue is resolved in Apache httpd.conf. Uncomment : Include conf/extra/httpd-mpm.conf

And edit httpd-mpm.conf

<IfModule mpm_winnt_module>
   ThreadLimit              2000
   ThreadsPerChild          2000
   MaxConnectionsPerChild   0
</IfModule>

Note that you may not need 2000 threads, or may need more. 2000 was OK for my case.

Solution 5 - Google Chrome

My case is the page is sending multiple requests with different parameters when it was open. So most are being "stalled". Following requests immediately sent gets "stalled". Avoiding unnecessary requests would be better (to be lazy...).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsetecView Question on Stackoverflow
Solution 1 - Google ChromeAlexander O'MaraView Answer on Stackoverflow
Solution 2 - Google ChromeNaga KiranView Answer on Stackoverflow
Solution 3 - Google ChromebriefyView Answer on Stackoverflow
Solution 4 - Google ChromeRenno KView Answer on Stackoverflow
Solution 5 - Google ChromeKevin .NETView Answer on Stackoverflow