Performance OpenFire、HTTP-BIND和性能

Performance OpenFire、HTTP-BIND和性能,performance,chat,xmpp,openfire,Performance,Chat,Xmpp,Openfire,我正在研究启动openfire服务器,并设置一个strophe.js客户端来连接它。我担心的是,使用http绑定与直接使用XMPP连接相比,在性能方面可能代价高昂 谁能告诉我我的担心是否相关?如果是的话,到什么程度 另一种方法是使用flash代理与OpenFire进行所有通信 谢谢我最终使用了node.js,因为我在通过BOSH直接连接Openfire时遇到了一些困难 我有一个运行node.js的生产站点,配置为代理所有BOSH请求,它的工作方式非常好(大约50个并发用户)。到目前为止唯一的缺点

我正在研究启动openfire服务器,并设置一个strophe.js客户端来连接它。我担心的是,使用http绑定与直接使用XMPP连接相比,在性能方面可能代价高昂

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

另一种方法是使用flash代理与OpenFire进行所有通信


谢谢

我最终使用了node.js,因为我在通过BOSH直接连接Openfire时遇到了一些困难


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

我最终使用了node.js,因为我在通过BOSH直接连接到Openfire时遇到了一些困难


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

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


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

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

但是,唯一真正知道的方法是基准测试。根据您的用例以及您的客户正在(将要)做的事情,差异可能可以忽略,也可能不会。基本知识:

Socket - zero overhead.

HTTP - requests even on IDLE session.
我怀疑你是否会同时拥有100万用户,但如果你想实现这一目标,那么像http这样的无连接协议会更好,因为我不确定是否有任何操作系统能够支持这种连接套接字卷

此外,您还可以将OpenFire连接在一起,形成一个农场,在那里您将具有良好的可扩展性。

基础:

Socket - zero overhead.

HTTP - requests even on IDLE session.
我怀疑你是否会同时拥有100万用户,但如果你想实现这一目标,那么像http这样的无连接协议会更好,因为我不确定是否有任何操作系统能够支持这种连接套接字卷


此外,您还可以将Openfire绑定在一起,形成一个服务器场,这样您将具有很好的可扩展性。

我们使用Openfire和BOSH,在同一MUC通道中有大约400个并发用户。 我们注意到的是Openfire泄露了内存。我们使用了大约1.5-2GB的内存,并得到了恒定的内存不足异常。 Openfire的BOSH实现也非常糟糕。然后我们切换到哪个更好,但无法解决openfire问题

我们现在将ejabberd与内置的http绑定实现一起使用,它的扩展性非常好。运行ejabberd的服务器上的负载几乎为0

目前,我们面临的问题是,我们用来处理聊天负载的5个Web服务器有时在大约200个连接的用户中过载。 我现在正在尝试使用WebSocket,但它似乎还不起作用。 也许不通过Apache重写规则而是直接在loadbalancer/proxy上重定向http绑定可以解决这个问题,但我找不到一种方法来解决这个问题


希望这有帮助。

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

我们现在将ejabberd与内置的http绑定实现一起使用,它的扩展性非常好。运行ejabberd的服务器上的负载几乎为0

目前,我们面临的问题是,我们用来处理聊天负载的5个Web服务器有时在大约200个连接的用户中过载。 我现在正在尝试使用WebSocket,但它似乎还不起作用。 也许不通过Apache重写规则而是直接在loadbalancer/proxy上重定向http绑定可以解决这个问题,但我找不到一种方法来解决这个问题


希望这能有所帮助。

感谢您抽出时间对我的问题进行评论,但您并不是真的想回答这个问题。我的问题是关于性能的,以及一个解决方案与另一个解决方案相比对它的影响有多大。为了记录在案,我正在考虑一个可能有数千(如果不是数百万)用户的实现。我感谢你花时间对我的问题进行评论,但你并不是真的试图回答这个问题。我的问题是关于性能的,以及一个解决方案与另一个解决方案相比对它的影响有多大。为了记录在案,我正在研究一个可能有数千(如果不是数百万)用户的实现。你是在问BOSH在Openfire中的性能,还是问BOSH的总体性能?总体来说,如果你有关于Openfire实现的信息,我很高兴听到:)你是在问BOSH在Openfire中的性能,或者泛泛而谈?总的来说,如果你有关于Openfire实现的信息可以分享,我会很高兴听到:)谢谢你的回复,妈妈