Firefox或Chrome不会释放句柄


2

我注意到,当浏览器(使用Firefox和Chrome测试)运行很长时间后,它会停止连接网站。我发现任务管理器浏览器进程的句柄数是90000+。关闭时,浏览器句柄计数开始下降但在某个时刻停止,只有合理的快速关闭浏览器才能终止进程。此外,“系统”进程具有高句柄数,当浏览器被杀死时,该句数会下降。

由于我可以在两个不同的浏览器上看到这种现象,因此它不能成为浏览器中的错误。是什么导致这个以及如何摆脱它?

我正在运行Windows XP SP3和Firefox 4.0.1。防病毒是F-Secure Client Security 9.01 build 122.没有使用代理,并且转向F-Secure防火墙似乎没有任何效果。

Netstat -nb输出包含许多这样的行:

TCP 127.0.0.1:3682 127.0.0.1:3681 CLOSE_WAIT 4112
[firefox.exe]

我怀疑F-Secure,但我不知道它是如何做到这一点的。


你的防病毒软件是什么?你在该软件中启用了该软件的WWW浏览器功能(广告拦截器,弹出窗口拦截器,隐私检查器等)吗?
JdeBP

我有F-Secure F-Secure Client Security 9.01 build 122(防火墙目前已禁用),只有浏览器扩展名是Firefox上的Ad-Block Plus。
Harriv

Firefox肯定有TCP连接到你机器上的套接字(注意127.0.0.1),所以 即使 您的防火墙已被禁用,因为某些原因您的WWW浏览器正在与本地的某些内容进行通你还没报什么 netstat 关于系统过程,如果有的话。
JdeBP

输出中没有关于系统进程的信息。
Harriv

Answers:


2

老实说,我不相信这是firefox或chrome的问题。我目前在chrome中打开了1220个选项卡,在firefox中打开了732个选项卡,并且这种方式已经持续了一个多星期而没有重启。在几个不同的方面可能存在问题,但追踪哪个是罪魁祸首可能非常困难。

有几点需要注意:

  • 路由器可以处理的最大连接数......(我见过基于家庭的路由器限制为4k活动连接,而其他路由器超过250k。)不幸的是,制造商并不总是充分记录这个限制。你可能也想看一下 还有什么 是连接(即p2p在后台运行?)
  • 您是否使用了代理? (病毒也可能充当代理并会导致类似问题)代理软件也可能存在这些限制,症状也类似。
  • 您访问的网站可能是一个促成因素。一些站点使用多种技术进行操作,最终与主机建立多个连接,以最大化网站和/或多个连接的吞吐量,以允许与服务器的双向通信。刷新或重新连接到网站,甚至搞乱javascript(即禁用javascript或使用“noscript”等程序)可能会无意中导致网站本身尝试与服务器建立额外的连接,并且问题可能呈指数级增长。

没有关于发生了什么的更多信息......我只能猜测。


我添加了一些更多信息来提问。
Harriv

与127.0.0.1的许多连接......你肯定有病毒。在这种情况下,病毒就像一个代理,以捕获从您的机器到远程站点的所有数据......然后返回。反病毒软件不会这样......(包括F-Secure)我强烈建议您尝试使用Avast或AVG或其他六种能够检测root工具包的防病毒软件。
TheCompWiz

1952年标签。 那是 ...
Mateen Ulhaq

2

TL; DR: 我终于找到了导致Windows 7中这个错误的原因(当然还有所有其他Windows版本)。实际上它是关于GDI对象的。

当GDI对象的数量达到10 000时,出现错误,Chrome崩溃了几次。现在,我想知道它是否是Chrome中的一个错误,或者它是一个插件/扩展错误。

要在任务管理器中查看GDI对象,请单击菜单“显示”→“选择列...”→选中“GDI对象”复选框。


我在Windows XP SP3上遇到过IE(我想是v7,或许是6)的这种错误。 我也经历过Chrome浏览器,但仅限于Windows 7家庭高级版。

我不认为反病毒是导致这种情况的原因,因为我在安装了官方Windows 7家庭高级版的新笔记本电脑(上个月购买)上遇到了这个问题,我现在从未安装任何防病毒软件。 。(甚至安装和删除!)

这个bug怎么出现给我:

首先,当这个“bug”出现时我从未打开过数百个标签但是每次浏览器都运行了很长时间(打开和关闭了很多标签)。 IE也是如此。

当我尝试下载任何内容(类似的问题打开一个新选项卡)时,没有出现“保存”对话框(没有足够的GUI句柄?)。浏览器似乎被冻结但是当我在Chrome顶部移动另一个窗口时,我可以猜出保存对话框的框架/边框,因为有刷新错误。因此,对话框没有显示,但无论如何它都被“显示”了。我最终按下了escape,对话框关闭,浏览器“解冻”。

目前我的浏览器Iron(基于Chromium的Chrome浏览器)打开了31个标签,拥有大部分句柄的进程有29203个句柄,第二个进程有2667个句柄,然后 explorer.exe 有1392个手柄等。我没有GUI处理问题。

当我遇到这个问题时,Iron只有大约7000个句柄,所以认为它是一个句柄问题或浏览器可能管理不当的任何句柄泄漏是没有意义的。

我认为这是Windows的问题..也许是一个手柄回收系统,我不知道。

注意:当我在Windows 7上遇到此问题时,我运行了任务管理器,并且它显示正确。在Windows XP(使用IE)上,而不是在这台笔记本电脑上,任务管理器也遇到了问题。我看不到任何进程,因为没有显示包含进程和列的网格!实际上,在关闭IE并释放所有句柄之前,我无法在此计算机上运行任何程序。

在Windows 7上(使用Chrome问题),GUI处理资源似乎是孤立的,因为我可以看到任务管理器并运行任何其他程序,而没有此GUI处理饥饿/短缺。 GUI句柄问题仅限于Iron。

由于我在Windows XP上从未遇到过Iron这个问题,所以这个问题可能是因为插件。


1

我禁用了所有“不必要的”浏览器插件,问题就消失了。我不确定它是哪一个。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.