终于知道为什么 Chrome 一直在转圈圈了……

2014-06-03 13:25:42 +08:00
 rrfeng
查了一下 Chrome 『waiting for available socket』,是说 Chrome 在同时最多和一个 server 建里 x (貌似是 6)个 socket 连接,如果再多的话那么就会一直等待之前的关闭。
好像还和 proxy 有关

于是乎 v2ex 为什么会经常 『waiting for available socket』呢……
IE 下无问题,看来是 Chrome 预加载之类的惹的货?另外其他网站暂时也没发现有这个问题。

有没有 V友遇到这个问题了?

@Livid
43761 次点击
所在节点    问与答
12 条回复
zzNucker
2014-06-03 13:40:31 +08:00
大概是因为有的资源加载太慢,老占着一个连接,所以就要等了。
akfish
2014-06-03 13:49:12 +08:00
你可以用Dev Tools里的Network Tab来看到底是哪个资源瓶颈了。
大概几个月前就发现了某些站点打开会这样,然后就发现是一些css/js被墙,加入规则,然后就biubiu的了。
00wuyu00
2014-06-03 13:49:56 +08:00
其他浏览器也有这样的IE的并发一般是2-4个,6个最多,所以做的网站,会把不同资源放在不同的服务器域名下面,这样就可以多多并发了,比如html放在www域名,图片放在img域名,脚本放在js域名
emric
2014-06-03 13:50:32 +08:00
rrfeng
2014-06-03 14:00:32 +08:00
@akfish
@00wuyu00
@emric

相反的,现在不开启 proxy(goagent)打开 v2ex 不会出现这个问题,打开 proxy 反而会出现这个问题……

这说明 http_proxy_socket_pool 之类的连接数满了影响到了 v2ex (由于页面内的,大致可以确定是 google 了吧,本站页面还有别的被墙的东西么?)


有没有解决办法呢…………
akfish
2014-06-03 14:03:51 +08:00
@rrfeng GoAgent最近本身就被墙各种折腾,63+1就要到了。。。。
rrfeng
2014-06-03 14:09:36 +08:00
奇了怪了

在 chrome://net-internals 里看 sockets 连接数
刚打开查看 google-analytics.com:80 连接数是 6 ,已达到上限,所以这就是原因。

于是我点了 flush ,然后把所有页面刷新,于是就一直是 2 了,再也没有达到 6

猜想:由于墙的原因,某个页面的 google-analytics.com 请求没有正常返回,另外的页面又在请求,于是就挤满了。
emric
2014-06-03 14:15:32 +08:00
@rrfeng

这很明显是墙了google 的一部分域名, 在完成 dom 加载后这部分才会开始加载.
导致长达一分钟的菊花.
如果把这部分域名加入规则, 大概 6S 就能够完成 window.onload 事件了.
emric
2014-06-03 14:36:28 +08:00
目前我在用的, 这部分正则:
(googleapis|google-analytics|doubleclick|googlesyndication|googleadsserving)\.(net|cn|com)
imn1
2014-06-03 16:34:00 +08:00
google-analytics,googlesyndication,googleadsserving 这三个我是直接放在privoxy拦截,对浏览没什么用,也不影响我用google其他服务
rrfeng
2014-06-03 16:54:42 +08:00
@imn1
好办法!
GPU
2014-08-13 22:07:20 +08:00
楼主分析的很好。 只能怪自己英语学不好。看不懂net-internals 里面的信息

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/115556

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX