Http-bind 耗时 6000 毫秒
Http-bind taking 6000ms
我有一个使用 PHP、javascript 和 jQuery 编程的 CRM。我们还有一个 XMPP 和 http-bind 用于 voip。
我的问题是:当我加载 CRM 时,前几个 http-bind 需要正常时间(<50 毫秒),之后它们总是需要大约 6000 毫秒。
此代码分为多个文件,而且很多。我真的不知道要添加哪一部分代码,所以我现在就省略代码并在需要时添加部分代码。
我对 http-binding 和 XMPP 还很陌生,遗憾的是找不到任何有用的东西,所以我很感激任何信息或帮助。
日志:
提前致谢!
提供信息的三个事实:
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 取决于服务器)并且没有收到保持连接,服务器将关闭连接。
您失败的地方是步骤 (2),浏览器没有重新使用相同的连接。然后它无法在打开 8 个连接时进行第 9 次调用
所以浏览器无法重新使用连接但发送 "keep-alives" 最多 60 秒然后停止(因此服务器关闭连接)或者浏览器无法关闭连接和服务器配置为 60 秒超时(这是巨大的!)
解决方案
我认为浏览器和服务器不太可能都损坏/配置错误,而且看起来您使用的是旧版本的 Firebug(或某些克隆或插件另一个浏览器)从那里开始?为了测试,更改浏览器和调试工具:
If Firebug: 这不再被开发所以你应该开始使用
内置 FireFox 开发工具(但如果失败,请完全尝试其他浏览器)
如果 Chrome 或 Edge,请使用其内置工具。
或者,使用 Fiddler (windows) 或 Charles (Mac)。但是,记得也试试其他浏览器。
您的替代方法是关闭 keep-alives/persistent 连接并检查服务器是否配置了 <60 秒超时。有点复杂,所以从浏览器和调试工具开始。
我有一个使用 PHP、javascript 和 jQuery 编程的 CRM。我们还有一个 XMPP 和 http-bind 用于 voip。
我的问题是:当我加载 CRM 时,前几个 http-bind 需要正常时间(<50 毫秒),之后它们总是需要大约 6000 毫秒。
此代码分为多个文件,而且很多。我真的不知道要添加哪一部分代码,所以我现在就省略代码并在需要时添加部分代码。
我对 http-binding 和 XMPP 还很陌生,遗憾的是找不到任何有用的东西,所以我很感激任何信息或帮助。
日志:
提前致谢!
提供信息的三个事实:
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 取决于服务器)并且没有收到保持连接,服务器将关闭连接。
您失败的地方是步骤 (2),浏览器没有重新使用相同的连接。然后它无法在打开 8 个连接时进行第 9 次调用
所以浏览器无法重新使用连接但发送 "keep-alives" 最多 60 秒然后停止(因此服务器关闭连接)或者浏览器无法关闭连接和服务器配置为 60 秒超时(这是巨大的!)
解决方案
我认为浏览器和服务器不太可能都损坏/配置错误,而且看起来您使用的是旧版本的 Firebug(或某些克隆或插件另一个浏览器)从那里开始?为了测试,更改浏览器和调试工具:
If Firebug: 这不再被开发所以你应该开始使用 内置 FireFox 开发工具(但如果失败,请完全尝试其他浏览器)
如果 Chrome 或 Edge,请使用其内置工具。
或者,使用 Fiddler (windows) 或 Charles (Mac)。但是,记得也试试其他浏览器。
您的替代方法是关闭 keep-alives/persistent 连接并检查服务器是否配置了 <60 秒超时。有点复杂,所以从浏览器和调试工具开始。