访问CSDN, Proxy negotiation时间过长问题的复现分析及解决

赞赏 2017-06-16

之前发现stalled时间过长,是我客户端的网络不稳定,当时Proxy negotiation耗时也就4 5毫秒,今天发现Proxy negotiation占据了1秒,常去csdn,网站本来就慢,偶尔还卡个1s,怎么受的了?

访问CSDN, Proxy negotiation时间过长问题的复现分析及解决

Proxy negotiation : 是处理代理的时间。

代理已经关掉啦,怎么还会有,即使有代理,也不能用去1.1s这么长的时间啊!


在浏览器中访问  chrome://net-internals/#events  来捕获事件日志,看看1.1秒究竟在干什么。


1:访问csdn的捕捉事件


如下图:

图左ID为33249这个请求,Source Type为HTTP_STREAM_JOB。看这个请求的右边,可以看出:

从 t=11126 到 t=12182 ,用去了1056毫秒和上图中的1.1秒是吻合的。

右侧红框中 t=11126 [st= 0] PROXY_SERVICE_WAITING_FOR_INIT_PAC [dt=1007] 这一行, 用去了1007毫秒

这一行在干什么?

在初始化PAC,也就是左边红框的内容。

PROXY_CONFIG_CHANGED,

接下来去请求,http://127.0.0.1:1080/pac 

http://127.0.0.1:1080/pac 是访问不到的,只有在Shadowsocks开启系统代理的时候,才能访问到。


2:于是打开Shadowsocks, 启用系统代理


然后再捕捉,信息如下:

看右边红框,这次 

t=5506 PROXY_SERVICE_WAITING_FOR_INIT_PAC  [dt=37]

只用了 37毫秒



3:接着关闭系统代理,然后再捕捉


信息如下:

同样,看右边红框,这次 

t=24221 PROXY_SERVICE_WAITING_FOR_INIT_PAC  [dt=31] 

用了 31毫秒.


为什么我关闭了系统代理,Proxy negotiation 这块还要花时间那,虽然只有31毫秒。

看上图左边红框,请求的东西较以前发生了变化,这次请求的是

wpad 
http://wpad/wpad.dat
http://wpad/wpad.dat
http://wpad/
wpad:80

这些信息。

网上查到,这是检测代理的,于是我把它去掉


4: 去掉自动检测


4.1:进入浏览器的【设置

滚动到底部,点击【显示高级设置】


4.2:找到【网络】下的【更改代理服务器设置】

点击它。



4.3:弹出【internet属性】窗口,点击【局域网设置】。


4.4:把【自动检测设置】勾选掉。


5:然后再捕捉


信息如下:

同样,看右边红框,这次 

t=3905 PROXY_SERVICE_WAITING_FOR_INIT_PAC  [dt=5] 

用了 5毫秒.

不知道怎么会还有一个  PROXY_CONFIG_CHANGED,不过已经不是我关心的问题。



重要的问题,我们回到最初,为什么我系统代理关掉了,请求的时候还是去找pac,用掉1.1秒,而这次我重从新开启,到再关闭,就不发生这1.1s的问题了那?


6:找到根本问题


6.1:在启用Shadowsocks系统代理的时候,经360提醒得知,他修改了注册表。


6.2:去看一下这个键值。

和上图设置的一致。


6.3:停掉系统代理后,再看看

Internet Settings下的AutoConfigURL不见了。

也就是说,Shadowsocks主动把他删除了。


而我为什么没有启动Shadowsocks还去请求PAC,很有可能就是非正常关闭Shadowsocks,注册表因此未被删除导致的。


不妨 在开始系统代理的情况下,直接关机试试(直接按电源的那种关机哟,这也才想起来昨天电脑卡死了一次。

开机后,发现 AutoConfigURL 还在,

用 chrome://net-internals/#events  来捕获, 有发生了1.1s的事情。

这下就弄明白了!

非正常关闭Shadowsocks,闹出这么多事,也学到不少东西。


7:附小技巧


这种偶发型的网络请求问题,最难的问题是如何复现了,又是你刷新个几十次,不一定出现。

这次复现,我用了隐身窗口, 可能平常我也喜欢在隐身窗口下调试,这次我发现在打开隐身窗口就能复现,100%。才得以做接下来的很多假设步骤。

(代理检测,可能就发生在初次打开浏览器,第一个网络请求的时候)


登陆后阅读全文
阅读 5178 赞赏 1 有用 8 没用 0 收藏 0 分享

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

赛蓝翔的头像

赛蓝翔

PHP开发一枚

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

微信跳一跳刷分攻略

改了php.ini中的open_basedir仍报错open_basedir restriction in effect

推荐 | PHP WEB消息推送框架 web-msg-sender (PHPSocket.IO)

如何准确判断请求是不是搜索引擎爬虫(蜘蛛)发出的请求?(php window linux)

PHP Warning: feof() expects parameter 1 to be resource, null

php Warning: A non-numeric value encountered in

原来这条命令可以让我们快速找到php.ini的位置

换成https后,网站还是没有安全标志或安全小锁?

在百度站长平台如何将http换成https

php file_get_contents() 如何伪造发送 referer?

手机扫一扫
分享文章