V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rrfeng
V2EX  ›  问与答

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

  •  1
     
  •   rrfeng · 2014-06-03 13:25:42 +08:00 · 43975 次点击
    这是一个创建于 3807 天前的主题,其中的信息可能已经有所发展或是发生改变。
    查了一下 Chrome 『waiting for available socket』,是说 Chrome 在同时最多和一个 server 建里 x (貌似是 6)个 socket 连接,如果再多的话那么就会一直等待之前的关闭。
    好像还和 proxy 有关

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

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

    @Livid
    第 1 条附言  ·  2014-06-03 14:09:42 +08:00
    在 chrome://net-internals 里看 sockets 连接数
    刚打开查看 google-analytics.com:80 连接数是 6 ,已达到上限,所以这就是原因。

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

    猜想:由于墙的原因,某个页面的 google-analytics.com 请求没有正常返回,另外的页面又在请求,于是就挤满了。
    第 2 条附言  ·  2014-06-03 14:36:51 +08:00
    最终原因:


    1. chrome 对于连接数的限制;
    2. www.google-analytics.com 被墙;
    3. feedly 大量使用了 google-analytics(每查看一个 feed 都会用这个统计);


    不开启 goagent 的话 google-analytics 的请求可能直接被阻断了,不会出现『等待可用的套接字』;开启 goagent ,偶尔受到 GFW 干扰(或者其他原因)某些请求没有及时响应,于是连接数满了。
    12 条回复    2014-08-13 22:07:20 +08:00
    zzNucker
        1
    zzNucker  
       2014-06-03 13:40:31 +08:00
    大概是因为有的资源加载太慢,老占着一个连接,所以就要等了。
    akfish
        2
    akfish  
       2014-06-03 13:49:12 +08:00
    你可以用Dev Tools里的Network Tab来看到底是哪个资源瓶颈了。
    大概几个月前就发现了某些站点打开会这样,然后就发现是一些css/js被墙,加入规则,然后就biubiu的了。
    00wuyu00
        3
    00wuyu00  
       2014-06-03 13:49:56 +08:00
    其他浏览器也有这样的IE的并发一般是2-4个,6个最多,所以做的网站,会把不同资源放在不同的服务器域名下面,这样就可以多多并发了,比如html放在www域名,图片放在img域名,脚本放在js域名
    emric
        4
    emric  
       2014-06-03 13:50:32 +08:00
    rrfeng
        5
    rrfeng  
    OP
       2014-06-03 14:00:32 +08:00
    @akfish
    @00wuyu00
    @emric

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

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


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

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

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

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

    这很明显是墙了google 的一部分域名, 在完成 dom 加载后这部分才会开始加载.
    导致长达一分钟的菊花.
    如果把这部分域名加入规则, 大概 6S 就能够完成 window.onload 事件了.
    emric
        9
    emric  
       2014-06-03 14:36:28 +08:00
    目前我在用的, 这部分正则:
    (googleapis|google-analytics|doubleclick|googlesyndication|googleadsserving)\.(net|cn|com)
    imn1
        10
    imn1  
       2014-06-03 16:34:00 +08:00
    google-analytics,googlesyndication,googleadsserving 这三个我是直接放在privoxy拦截,对浏览没什么用,也不影响我用google其他服务
    rrfeng
        11
    rrfeng  
    OP
       2014-06-03 16:54:42 +08:00
    @imn1
    好办法!
    GPU
        12
    GPU  
       2014-08-13 22:07:20 +08:00
    楼主分析的很好。 只能怪自己英语学不好。看不懂net-internals 里面的信息
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:33 · PVG 12:33 · LAX 20:33 · JFK 23:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.