Http-bind 耗时 6000ms
Posted
技术标签:
【中文标题】Http-bind 耗时 6000ms【英文标题】:Http-bind taking 6000ms 【发布时间】:2016-12-02 08:16:22 【问题描述】:我有一个用 php、javascript 和 jQuery 编写的 CRM。我们还有一个用于 voip 的 XMPP 和 http-bind。
我的问题是:当我加载 CRM 时,前几个 http-binds 需要正常时间(
用于此的代码拆分为多个文件并且很多。我真的不知道要添加代码的哪一部分,所以我现在就省略代码并在需要时添加部分代码。
我对 http-binding 和 XMPP 还很陌生,遗憾的是还没有找到任何有用的东西,所以我感谢任何信息或帮助。
日志:
提前致谢!
【问题讨论】:
【参考方案1】:提供信息的三个事实:
Firefox 默认情况下每台服务器最多有 8 个连接。这是可配置的,但如果您更改,请小心。 http://kb.mozillazine.org/Network.http.max-connections-per-server。 (注意:我认为最大是没有 15 个持久连接,但看起来你使用的不是最新的 Firefox 或开发插件?)
默认情况下,持久连接(即与服务器的连接保持打开状态并可重复使用 - 请参阅 https://en.wikipedia.org/wiki/HTTP_persistent_connection)在关闭前保持打开状态 60 秒。
浏览器进行 8 个并发调用,然后在下一个调用之前等待 60 秒。
应该发生什么:
-
浏览器打开(最多)8 个连接并发出(最多)8 个并行请求。
一旦请求得到响应,浏览器将重新使用相同的连接。
如果失败,它将发出“keep-alive”来告诉服务器保持连接打开。
如果连接未使用 X 秒(X 取决于服务器)并且没有收到 keep-alive,服务器将关闭连接。
您在第 (2) 步失败的地方,浏览器没有重复使用相同的连接。然后它在打开 8 个连接时无法拨打第 9 个电话
因此,要么浏览器无法重新使用连接,但确实发送“keep-alives”长达 60 秒然后停止(因此服务器关闭连接),或者浏览器无法关闭连接并且服务器已配置60 秒超时(这是巨大的!)
解决方案
我认为浏览器和服务器都不太可能损坏/配置错误,并且看起来您使用的是旧版本的 Firebug(或其他浏览器的某些克隆或插件)从那里开始?为了测试,更改浏览器和调试工具:
如果 Firebug:不再开发,所以您应该开始使用 内置 FireFox 开发工具(但如果失败,请完全尝试其他浏览器)
如果是 Chrome 或 Edge,请使用它们的内置工具。
或者,使用 Fiddler (Windows) 或 Charles (Mac)。但是,请记住也要尝试其他浏览器。
您的替代方法是关闭 keep-alives/persistent 连接并检查服务器是否配置为
【讨论】:
以上是关于Http-bind 耗时 6000ms的主要内容,如果未能解决你的问题,请参考以下文章