关于apache调整聊天应用程序的建议

时间:2010-05-12 08:07:23

标签: chat xmpp apache

我有一个将由apache提供的聊天应用程序(xmpp / muc)(我们可能会在稍后更改为nginx,但现在它不容易完成)。如果用户在2个房间,他将有2到4个活动连接到服务器(长轮询连接),所以如果我们每个房间有200个用户,我们有5个房间,那么ServerLimit,MaxClients应该设置什么至?例如,这些是默认值:

ServerLimit 256

MaxClients 256

MaxRequestsPerChild 4000

谢谢,

2 个答案:

答案 0 :(得分:0)

如果您使用BOSH之类的东西进行Web-> XMPP连接,则每个用户应该只与XMPP服务器建立一个连接。每个MUC会议室活动将以用户的JID作为目标发送到XMPP服务器,这将使服务器将其发送到适当的BOSH连接。存在相同。

负载均衡Apache设置所需的信息与负载均衡任何长轮询连接相同 - XMPP不会添加任何异常混合。 XMPP BOSH连接是与Web服务器的长轮询连接,然后发送到与XMPP服务器的持久连接 - 导致每个用户连接打开2个套接字。

答案 1 :(得分:-1)

我猜这是一个预分叉的Apache ....

如果您有1000个并发聊天连接,那么您至少需要1000个网络服务器(可能您也将提供静态内容,并且您说每个状态会导致2个连接 - 因此您可以将1000倍加倍) - 一个256的ServerLimit / MaxClients不会削减它,你可能需要大约2200来支持它(但没有硬指标很难给出一个确切的数字)。

这是一个非常大的数额。为了支持这一点,我将寻找3个盒子,每个盒子在网络服务器启动之前都有大约2Gb的可用内存。

MaxRequestsPerChild除了你想要一些流程转换的事实之外并不是真正相关的,特别是如果你使用长轮询。

这是COMET不是一个好主意的原因之一。使用AJAX轮询会更有效率。假设这不是你可以改变的东西,你可能想看一下使用线程性更高的内存效率的线程Apache webserver,

下进行。