When to use connection managers

Hello!

I have several questions regarding when to use connection managers and what deployment situations benefits from connection managers.

1 - How many connections can the OpenFire server handle before it is considered nessessary to add connection managers?

2 - Is there any advantage what so ever to have a connection manager if you run it on the same physical machine as the OpenFire server?

3 - If you plan to use only one connection manager, on a different physical machine, do that have any positive benefits?

4 - The connection manager documentation notes that the connection manager module “is suitable for very large installations of Openfire (many thousand concurrent users).” What happens if this number is exceeded? Do the connection manager fail or will the through put of messages just slow down? Is there a firmer estimate on how many users a connection manager can handle then “many thousand”.

Regards

Jesper Tärnvik, Boss Media AB

Jesper,

The true test is not how many “connections”, but how many packets OpenFire can handle. After being logged in, clients send and receive packets to the server. From working with other customers, OpenFire can support more than 3,000 packets per second (with xmpp.socket.tcp-nodelay set to true–it is false by default). Internal testing has increased the number to more than 9,000 packets per second. At this level, one needs to optimize TCP/IP settings, buffer sizes, etc…

The use of connection managers really depends on what your bottleneck is. If your bottleneck is CPU, then connection mangers will help. We have some documentation on this here: http://wiki.igniterealtime.org/display/NINJA/Monitorloadontheserver

Regarding exceeding the number of connectionsit depends on the error you seetypically what I have observed is the network being the bottleneck, where the packets queue up in the memory to point where you see an out of memory exception. I haven’'t seen a CPU bound issue yet, but I imagine the same thing would happen–packets will queue up in memory until the system is no longer overloaded, or until the system runs out of memory.

Hope this helps!

kevinw,

Thank you for the clarification, a followup question: What is the definition of a packet? For the sake of argument lets assume that the Openfire server hosts 1 MultiUserChat (Group chat) room with 10 active users.

If one of those users sends one message to the room how many packets would that be in total server load?

  • One (1) packet, as in one packet is sent to the server or,

  • Eleven (11) packages as in one message is sent to the server and 10 messages is sent to each participant in the room or,

  • Something completely different.

Regards,

Jesper Tärnvik, Boss Media AB

Go to Spark->Help->Show Traffic Window and click on the tab that has your username. Looking at the ‘‘All Packets’’ list should give you an idea of what a packet is.

bemace has a great recommendation for checking out exactly what a packet is.

Group chat is something unique as it isn’‘t 1 to 1. Using your example, OF will read in 1 packet, and will write out 9 packets (the sender doesn’'t receive that).