阅读:11346回复: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
前段时间的假死 我删除掉几个扩展后 问题解决了
|
|
2楼#
发布于:2008-01-27 05:31
现在的假死网站貌似是zol了,这个倒是经常假死
|
|
3楼#
发布于:2008-01-27 05:31
very CD 确实有时会假死 选用一个新的配置文件确实会没事 我并没有使用代理的扩展 禁用ABP不会假死 但删除原来的 安装一个新 也没用 清空里面的规则也没用 后为装了删 删了装 装了几次 不知怎么就好了
|
|
4楼#
发布于:2008-01-27 05:31
我是用pac的,从不假死
|
|
|
5楼#
发布于:2008-01-27 05:31
一直在用pac,也没有发现什么问题.是不是还有别的扩展的影响
|
|
6楼#
发布于:2008-01-27 05:31
用autoproxy和foxyproxy之前,要把firefox的网络,如何连接到互联网的设置为无代理,然后安装autoproxy和foxyproxy,在用pac那些乱七八糟的东西就没事了,没事要禁用flash插件,流畅的一逼
|
|
7楼#
发布于:2008-01-27 05:31
历史总是惊人的相似,呵呵。时隔两年多,我也碰到了同样的问题,linux下firfox/iceweasel 4/5/6都出现假死现象,这个问题困扰了我两个多月,采取了跟楼主类似的方法企图定位问题一直无所获,直至昨日,才猛然发现pac是罪魁祸首。
同样的pac,在chrome和opera都很正常,不知道为啥firefox反应这么慢。 |
|
8楼#
发布于:2008-01-27 05:31
firefox 3 同样受到pac假死困扰:我刚刚经历了与楼主相似的过程。
![]() |
|
9楼#
发布于:2008-01-27 05:31
呵呵 光看看都有点晕
佩服楼主 |
|
10楼#
发布于:2008-01-27 05:31
|
|
11楼#
发布于:2008-01-27 05:31
前几天确实有问题,这几天的nightly又好了。不晓得什么原因。
|
|
12楼#
发布于:2008-01-27 05:31
没有几个人在用 浏览器自动代理脚本 吧?
曾经尝试过,感觉较麻烦。 还是用foxyProxy方便。 |
|
|
13楼#
发布于:2008-01-27 05:31
就用gladder,需要代理再用,平常用OpenDNS,也有动态IP
|
|
14楼#
发布于:2008-01-27 05:31
|
|
|
上一页
下一页