【问题标题】:OpenFire, HTTP-BIND and performanceOpenFire、HTTP-BIND 和性能
【发布时间】:2012-01-03 03:38:53
【问题描述】:

我正在考虑启动一个 openfire 服务器并设置一个 strophe.js 客户端来连接它。我担心的是,与直接建立 XMPP 连接相比,使用 http-bind 的性能成本可能很高。

谁能告诉我我的担忧是否相关?如果是的话,具体到什么程度?

替代方法是使用 Flash 代理与 OpenFire 进行所有通信。

谢谢

【问题讨论】:

  • 您是在询问 BOSH 在 Openfire 中的性能,还是一般的 BOSH?
  • 一般来说,如果你有关于 Openfire 实现的信息可以分享,我会很高兴听到它:)

标签: performance chat xmpp openfire


【解决方案1】:

BOSH 比普通 XMPP 更冗长,尤其是在空闲时。一个空闲的 BOSH 连接可能是每分钟大约 2 个 HTTP 请求,而一个正常的连接可能会闲置数小时甚至数天而不会发送一个数据包(理论上,在实践中,您将有 ping 和 keepalives 来对抗 NAT 和损坏的防火墙) .

但是,唯一真正了解的方法是基准测试。根据您的用例以及您的客户正在(将要)做什么,差异可能可以忽略不计。

【讨论】:

    【解决方案2】:

    基础知识:

    Socket - zero overhead.
    
    HTTP - requests even on IDLE session.
    

    我怀疑你会同时拥有 100 万用户,但如果你的目标是它,那么像 http 这样的无连接协议会好得多,因为我不确定任何操作系统都可以支持那种连接的套接字音量。

    此外,您可以将 OpenFire 捆绑在一起,形成一个农场,在那里您将拥有很好的可扩展性。

    【讨论】:

      【解决方案3】:

      我们使用 Openfire 和 BOSH,在同一个 MUC 频道中拥有大约 400 个并发用户。 我们注意到的是 Openfire 泄漏内存。我们使用了大约 1.5-2 GB 的内存,并且经常出现内存不足的异常。 Openfire 的 BOSH 实现也很糟糕。然后我们切换到punjab,这更好,但无法解决 openfire 问题。

      我们现在使用 ejabberd 及其内置的 http-bind 实现,它的扩展性很好。运行 ejabberd 的服务器上的负载几乎为 0。

      目前我们面临的问题是,我们用来处理聊天负载的 5 个网络服务器有时会在大约 200 个连接用户时超载。 我现在正在尝试使用 websockets,但它似乎还不起作用。 也许不是通过 Apache 重写规则而是直接在负载均衡器/代理上重定向 http-bind 可以解决问题,但我找不到如何执行此操作的方法。

      希望这会有所帮助。

      【讨论】:

      • 感谢您的回复,请问您使用 Openfire 多久了?他们的更新经历了很长时间的中断,但他们似乎从去年开始再次维护它。对于您的代理问题,我个人为此使用了 apache 代理模块,配置如下:pastebin.com/zEJ1ZZNq。当然,到目前为止,我还无法进行任何严肃的负载测试。
      • 我们去年用过它,大约从八月到九月/十月。在切换到 ejabberd 之前,我们使用了 afaik 3.7.0。您需要考虑的是,MUC(正如我们在设置中使用的那样)需要比“标准”jabber 服务更多的资源。也许它适用于你的情况。关于代理:有趣的设置,我需要对其进行测试(如果这样更好的话)。我们有(并且仍然有)我们的设置,比如this
      【解决方案4】:

      我最终使用了 node.js 和 http://code.google.com/p/node-xmpp-bosh,因为我在通过 BOSH 直接连接到 Openfire 时遇到了一些困难。

      我有一个运行 node.js 的生产站点,该站点配置为代理所有 BOSH 请求,它的工作原理就像一个魅力(大约 50 个并发用户)。到目前为止唯一的缺点:在 Openfire 管理控制台中,您不会看到已连接客户端的实际 IP 地址,只有本地服务器地址会显示为 Openfire 从 node.js 服务器获取的连接。

      【讨论】:

      • 感谢您抽出宝贵时间对我的问题发表评论,但您并没有真正尝试回答它。我的问题是关于性能,以及一个解决方案对它的影响与另一个解决方案相比有多大。郑重声明,我正在研究一个可能有数千甚至数百万用户的实现。
      猜你喜欢
      • 2012-11-20
      • 2012-04-13
      • 2013-03-04
      • 1970-01-01
      • 2011-02-13
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多