阅读:10238回复:20
【原创】不厌其烦,终于找到一个长期以来的假死元凶
之前曾经说过Firefox最近假死现象少了,结果在最近几天的Build中假死又经常出现(不光是崩溃,而是假死)。
假死一般出现在访问国内网站上,打开多个国内网站特别容易假死,像Verycd这样的网站,我开两次就死一次。我一直都觉得是国内网页不标准的原因,也一直回避着上国内的网站,不过今天假死的太厉害,让我不由得想知道:在怀疑Mozilla团队最近几天build不稳定之外,我是不是也该自己测试一下? 下面分享我测试的过程和结果,虽然最终的结果可能大家很少会用到,但交流一下排除这类疑难杂症的思路也无妨。 [*]首先当然是锁定几个造成假死的网站啦,倒霉的是Verycd好像怕了似的,今天开得都正常。于是在网上神遛,找到这样两个网页,同时开这两个网页的结果是必死无疑: http://sun760209.blog.163.com/blog/stat ... 343221526/ http://www.tianya.cn/publicforum/Conten ... 9192.shtml (呵呵,无聊,看起奢侈品来了)——这两个网站中图片很多,我有DU meter在监视网络流量,看得出来,假死后,图片停止了下载,从100K/S降到0,整个浏览器死掉了(在此我保留传统的称呼:假死,而不用“真死”),而如果像后面说的用干净的profile,不假死的情况下,通过DU meter能看得出,整个网页要保持在200K/S下载40~50秒才能载完。[/*:m] [*]然后试着去禁用几个扩展:Adblock,TMP,无效。[/*:m] [*]猛然间想起很重要的:看看用干净的Profile(叫exp1吧)是什么状况——新建一个Profile,打开这两个网站,没有假死![/*:m] [*]那么,还是要处理原来的Profile(叫old),因为我可不想用一个新的Profile为基础,全部重新装扩展,调整参数。[/*:m] [*]还是回到怀疑扩展上来,先一棍子打死,用-safe-mode启动,选择禁用所有扩展,再测试依然假死——看来问题不在(或不完全在)扩展上[/*:m] [*]那么就是about:config了(对应Pref.js),可是,我进行了那么多的调整,会是哪一条呢?[/*:m] [*]再新建一个Profile(叫exp2),启动Firefox后把exp2的目标清空,把old中的内容全部copy到exp2的目录中,姑且称之为“profile克隆”吧。下面就尽情折腾吧:把/extension/子目录清空,根目录下删除掉extension.rdf,再启动这个exp2的时候,扩展就真的没有了(因为我不太信任-safe-mode会彻底屏蔽掉扩展带来的影响)。[/*:m] [*]即便是这样,假死依然存在。需要说明的是,把扩展清空,扩展引入的about:config条目依然存在于pref.js中,这是个有得有弊的功能,好处是下次装扩展不用重新配置,缺点自然是像Windows的添加删除程序一样经常不能在卸载时清干净注册表中的内容。[/*:m] [*]下面要对about:config动刀,想了一下,与其去把扩展们残余下来的条目一条条删掉(Reset掉),不如想一下自己会是改动了哪里。从植物学的角度来说,首先应该怀疑的是浏览器在载入的过程中“呛”到了,而不是javascript脚本的问题。那么,是不是载入太快了呢?[/*:m] [*]记得原来有一个nglayout.initialpaint.delay,我是不是调太小了?——改回100也没用[/*:m] [*]pipelining(管道功能)?试了一下,把所有这方面的东西重置,包括例如network.http.max-connections-per-server等等,全部改回默认值,没有用。[/*:m] [*]一筹莫展之际,在搜索network开头的about:config项中发现我正用着代理,这跟代理有关吗?在干净的exp1中试了试使用代理,没有假死,打开速度更快了。然而在有问题的old中关掉代理,也没有假死!事情开始有点眉目了。[/*:m] [*]问题不光是出现在代理上,那么再往下看,发现一个问题:我的代理是通过代理自动配置脚本来完成的,上国外网站直连,上国内网站用代理,判断的标准是一个pac文件。把它禁用掉,试了一下,用old profile,不管是单独用代理,还是不用代理,都没有再出现过假死。[/*:m] [*]最终,锁定问题在这个代理自动配置上,我想,问题可能来自于对目标ip的判断量太大(把每个网页图片对应的ip和pac文件的ip列表中的项目比较,去判断是用还是不用代理)让Firefox很痛苦。在试图研究pac文件是否能优化之前,现在先老老实实地自己决定用还是不用ip吧。[/*:m][/list:u] 经过反复测试,假死现象已经大大减少:包括在论坛中用中键零零散散地点帖子,都不会出现卡一下的现象;Verycd等比较顽固的网站,除了慢点也没有假死的现象发生了。虽然花了点时间,最终可喜的是用非常低的代价排除掉了一个一直以来的误解,或许国内的网页没有想象中的那么恐怖吧。 |
|
|
1楼#
发布于:2008-01-27 05:31
佩服你的折腾精神
顺便发下牢骚,上星期的nightly的确不行,放着不动也假死。 幸好有备份profile,还原,用回旧的nightly,搞掂。 现在用着的不错,fcitx能正常工作,而且没试过假死。 |
|
|
2楼#
发布于:2008-01-27 05:31
原来如此,只能说ff的pac功能很弱或者有bug
....pfpf |
|
|
3楼#
发布于:2008-01-27 05:31
虽然我在用FIREFOX过程很少碰到假死,就是你上面提到的网站也没有假死现象,不过优化设置的确有时候不是那管用,比如nglayout.initialpaint.delay和以network.http开头这几条优化后,打开网页会出现瞬间停顿,我觉得网络优化没有太大的必要,我国的网络正体不是很让人满意
|
|
4楼#
发布于:2008-01-27 05:31
或许用provixy做代理会好点。
|
|
5楼#
发布于:2008-01-27 05:31
2个网站都打开 也没有出现假死啊
|
|
6楼#
发布于:2008-01-27 05:31
很欣赏你的折腾精神,你的处理思路也很好!给你授精了!
|
|
|
7楼#
发布于:2008-01-27 05:31
|
|
|
8楼#
发布于:2008-01-27 05:31
就用gladder,需要代理再用,平常用OpenDNS,也有动态IP
|
|
9楼#
发布于:2008-01-27 05:31
没有几个人在用 浏览器自动代理脚本 吧?
曾经尝试过,感觉较麻烦。 还是用foxyProxy方便。 |
|
|
10楼#
发布于:2008-01-27 05:31
前几天确实有问题,这几天的nightly又好了。不晓得什么原因。
|
|
11楼#
发布于:2008-01-27 05:31
|
|
12楼#
发布于:2008-01-27 05:31
呵呵 光看看都有点晕
佩服楼主 |
|
13楼#
发布于:2008-01-27 05:31
firefox 3 同样受到pac假死困扰:我刚刚经历了与楼主相似的过程。
|
|
14楼#
发布于:2008-01-27 05:31
历史总是惊人的相似,呵呵。时隔两年多,我也碰到了同样的问题,linux下firfox/iceweasel 4/5/6都出现假死现象,这个问题困扰了我两个多月,采取了跟楼主类似的方法企图定位问题一直无所获,直至昨日,才猛然发现pac是罪魁祸首。
同样的pac,在chrome和opera都很正常,不知道为啥firefox反应这么慢。 |
|
上一页
下一页