Http-bind 耗时 6000ms

Posted

技术标签:

【中文标题】Http-bind 耗时 6000ms【英文标题】:Http-bind taking 6000ms 【发布时间】:2016-12-02 08:16:22 【问题描述】:

我有一个用 phpjavascript 和 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的主要内容,如果未能解决你的问题,请参考以下文章

qt信号耗时10ms

性能优化案例(2019-案例78)-接口性能耗时问题分析

技术干货:实时视频直播首屏耗时400ms内的优化实践

Redis EXISTS命令耗时过长case排查

数据库查询性能 LinqDB vs Sql查询

TP90,TP99,TP999,MAX含义