I am toying around with Wildfire and would like to test out some of its scaling capabilities. I do not quite understand the idea of using connection managers.
Should I have several smaller hosts running connection managers and having them then connect to a more powerful Wildfire core server? Or are they like smaller listener daemons that run on the same server as Wildfire?
How do you specify which client managers to distribute incoming connections to, or would that be some kind of Layer 4 load balancing / switching?
Also does anyone have hardware resources Wildfire needs to handle X connections? I mean, does Wildfire need to run on its own box or could I put the DB or LDAP server on the same box to reduce latency? Can I recycle my old PIII 450mhz boxes
For numbers sake, I’‘m thinking of traffic generation around 10,000 concurrent users with vCard profiles, group chats, presence, etc. Sorry this post is so general but I’'m just getting into XMPP and figuring out how it can be used in larger community applications.
handling connections requires some memory and cpu cycles, and as a 4 GB Java process is not really easy to handle the CM’‘s were created. Gato should have the # of connections per connection manager and the memory requirement so I don’'t try to post it here. Depending on the available CPU power and memory of each CM you may want to run it either on your Wildfire server or on a remote server.
I’‘m using a simple TCP load balancer, two CM’'s and Wildfire on one server just as a prove of concept and this runs fine so far.
I assume that you can also use DNS round robin or a LayerX switch for load balancing.
Connection Managers are currently using a blocking model. This means that for each connected client there is going to be a thread in the Java Virtual Machine. Therefore, we are estimating that each CM should be able to handle 5K concurrent users. We haven’'t run exhaustive tests to calculate how many CMs could be concurrently connected to Wildfire but a theoretical number would be many thousands since Wildfire is also using a blocking model. However, in practice the server may find other limitations that will not let you have 25 million of concurrent users. A more conservative number we are handling is around 100K concurrent users in the server that could be accomplished with around 20 CMs.
If there are non-local users connecting from external servers and components, should they be included in the 100K count? I’'m concerned about some external component - not restricted to the blocking model - that can potentially bring perhaps another 100K users.