“Blocked”在Firefox开发者工具网络监控中到底是什么意思?

91

Firefox Network Monitor文档中关于时间的部分解释“阻止”的含义为:

在队列中等待网络连接所花费的时间。

浏览器对向单个服务器建立的同时连接数有限制。在Firefox中,默认值为6。

这个连接数限制是唯一的限制吗?还是浏览器在等待从操作系统获取连接时也算作被阻止了?

在新的浏览器中,首次连接之前(因此此时不应用该限制),我会被阻止195毫秒。

enter image description here

这是浏览器在等待操作系统吗?在这里,“阻止”是什么意思?


5
我有同样的问题。当我们在Firefox上打开唯一的网站时,为什么会显示被阻止几秒钟,这真的很令人困惑。 - Fahad Ur Rehman
2
你很幸运,我被封锁了180516毫秒... 我其实以为这个网站已经挂了。 - Juh_
1
只有在连接 VPN 时,我才会遇到这种情况,而且只发生在某些网站上。真的很奇怪。 - Gregor Sturm
5个回答

11

我们将Firefox设置(about:config)中的“network.http.max-persistent-connections-per-server”更改为64,随后阻塞问题得到解决。之后,我们将其更改回6。我们还改变了设计/开发方法,采用了一种更“异步”的加载方法,以避免同时打开大量连接。这些阻塞问题主要是由于加载了大量的png本地化标志。


将“network.http.max-persistent-connections-per-server”设置为64似乎已经解决了我的问题,谢谢! - Alan
请注意,为使更改生效,需要重新启动Firefox。 - William Reed

6
在等待网络连接的队列中花费的时间。 浏览器对单个服务器可以建立的同时连接数量施加了限制。在Firefox中,默认值为6,但可以使用network.http.max-persistent-connections-per-server首选项进行更改。如果所有连接都在使用中,则浏览器无法下载更多资源,直到连接被释放。 来源:https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor 很明显,浏览器将每个服务器(域名/IP)的并发连接限制为6个,操作系统问题并不是非常相关。

32
但是这并不能解释为什么“在新的浏览器中,在第一次连接之前,在进行任何其他连接之前(因此限制不应该适用于这里),我被阻止了195毫秒。”或者这是否意味着突出显示的请求不是队列中的第一个。 - Beothorn
1
我认为你可能打开了另一个选项卡,向google.ca服务器发送了后台请求。文档中并不是很清楚限制是应用于每个选项卡还是整个浏览器,你应该只打开一个选项卡并查看结果。 - Karl.S
4
@Karl.S 不,我所说的“新的浏览器”是指刚启动且没有任何其他标签页或窗口的浏览器。我刚试了一下 FF v57(量子版),仍然在第一个请求上被“阻止”了148毫秒,最终得到了301的响应。接下来的两个请求分别被阻止了109毫秒和400毫秒。这些都是前三个请求,我还不明白它们为什么会被阻止。 - Yves Dorfsman
1
@digitarald 如果能够暴露出占用主线程/阻塞的内容,那就太好了。我有这样的情况:当没有其他标签页打开、没有插件运行、没有活动的请求时,发送到我已经登录的HTTPS域的AJAX请求之前仍然会有大约500毫秒的阻塞。例如,我认为没有任何东西应该被阻塞,但是确实有些东西被阻塞了。我需要确定它是什么。 - scunliffe
3
@digitarald 这里肯定有更多的内容。"基于限制和启发式算法排队请求"为什么第一个请求会被阻塞? 为什么 https 请求总是被阻塞超过 300 毫秒,而 http 请求只被阻塞约 50 毫秒?新的浏览器:"google.com" 第一次请求被阻塞了 86 毫秒(301) 新的浏览器:"https : // google.com" 第一次请求被阻塞了 249 毫秒(200)DNS 请求在被阻塞后进行。FF 在这 249 毫秒里在做什么?或者在甚至查询 DNS 之前的 86 毫秒里在做什么? - Yves Dorfsman
显示剩余3条评论

6
我有一台服务器响应需要几秒钟,这让我能够将Firefox的测量结果与Wireshark跟踪进行交叉参考。我发现第一个SYN立即发送。"Blocked"时间结束时对应着Server Hello返回的时刻。
我无法将"TLS setup"的结束与任何Wireshark数据包相关联。它延伸了几秒钟,超出了初始TLS连接交换的最后一个数据。
总之,至少在某些情况下,"Blocked"和"TLS setup"所花费的时间似乎不是非常可靠。
我的设置中有一个TLS反向代理,它通过SNI转发连接。我不确定这是否有关。

1
但是从图表上看,DNS解析发生在Blocked阶段之后? - Qian

3
在我的情况下,等待网络连接和DNS查找时间都非常长,每个时间长达2秒,如果页面是第一次加载,则会导致显着的页面加载时间延迟。Firefox是全新安装的,没有安装任何插件,并且没有打开其他选项卡。我在Ubuntu 18.04 LTS和Ubuntu 19.04上尝试了相同的结果。虽然我的ISP不提供支持,但我的路由器分配IPv6地址。事实证明,问题是IPv6网络故障,这迫使Firefox回退到IPv4(当然需要一些时间(超时))。在Linux中关闭IPv6支持后,请求速度显着加快。
以下是相关讨论:https://bugzilla.mozilla.org/show_bug.cgi?id=1452028

1
我在使用Angular 9的“dist”部署时遇到了这个错误。我发现这个错误是因为我试图访问一个无法访问的API,根据指定的IP地址和端口。
因此,为了解决这个问题,我只需要引用一个有效且可访问的API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接