Webpage resource request stalled for nearly a minute in Chrome Webpage resource request stalled for nearly a minute in Chrome google-chrome google-chrome

Webpage resource request stalled for nearly a minute in Chrome


I encountered the exact same problem. We are using Elastic Beanstalk with Network Load Balancer (NLB) with TLS termination at NLB.

The feedback I got from AWS support is:

This problem can occur when a client connects to a TLS listener on a Network Load Balancer and does not send data immediately after completing the TLS handshake. The root cause is an edge case in the handling of new connections. Note that this only occurs if the Target Group for the TLS listener is configured to use the TCP protocol without Proxy Protocol v2 enabled

They are working on a fix for this issue now.Somehow this problem can only be noticed when you are using Chrome browser.

In the meantime, you have these 2 options as workaround:

  • enable Proxy Protocol v2 on the Target Group OR
  • configure the Target Group to use TLS protocol for routing traffic to the targets


I know it's a late answer but I write it for someone seeking a solution.

TL;DR: In my case, enabling cross-zone load balancing attribute of NLB solved the problem.


With investigation using WireShark I figured out there were two different IPv4 addresses Chrome communicated with.Sending packets to one of them always succeeded and to the other always failed.Actually the two addresses delegated two Availability Zones.

By default, cross-zone load balancing is disabled if you choose NLB (on the contrary the same attribute of ALB is enabled by default).Let's say there are two AZs; AZ-1 / AZ-2.When you attach both AZs to a NLB, it has a node for each AZ.

The node belongs to AZ-1 just routes traffic to instances which also belong to AZ-1. AZ-2 instances are ignored.My modest app (hosted on Fargate) has just one app server (ECS task) in AZ-2 so that the NLB node in AZ-1 cannot route traffic to anywhere.

I'm not familiar with TCP/IP or Browser implementation but in my understanding, your browser somehow selects the actual ip address after DNS lookup.If the AZ-2 node is selected in the above case then everything goes fine, but if the AZ-1 is selected your browser starts stalling.Maybe Chrome has a random strategy to select ip while Safari or Firefox has a sticky one, so that the problem only appears on Chrome.

After enabling cross-zone load balancing the ECS task on AZ-2 is visible from the AZ-1 NLB node, and it works fine with Chrome browser too.

(Please feel free to correct my poor English. Thank you!)


I see two things that could be responsible for delays:

1) Usage of CDNs
If the resources that load slow are loaded from CDNs (Content Delivery Networks) you should try to download them to the server and deliver directly.
Especially if you use http2 this can be a remarkable gain in speed, but also with http1. I've no experience with AWS, so I don't know how things are served there by default.
It's not shown clearly in your screenshot if the resources are loaded from CDN but as it's about scripts I think that's a reasonable assumption.

2) Chrome’s resource scheduler
General description: https://blog.chromium.org/2013/04/chrome-27-beta-speedier-web-and-new.html
It's possible or even probable that this scheduler has changed since the article was published but it's at least shown in your screenshot.
I think if you optimize the page with help of the https://www.webpagetest.org and the chrome web tools you can solve any problems with the scheduler but also other problems concerning speed and perhaps other issues too. Here is the link: https://developers.google.com/web/tools/

EDIT
3) Proxy-Issue
In general it's possible that chrome has either problems or reasons to delay because of the proxy-server. Details can't be known before locking at the log-files, perhaps you've to adjust that log-files are even produced and that the log-level is enough to tell you about any problems (Level Warning or even Info).