How to config wildfire servers so as to load balanced

Hello everyone:

I installed two wildfire servers into two pc respectively(installed with wildfire_2_4_0.exe. I can install wildfire_3_1_1.exe instead , if I can get better performance from it.) .

Now I want them to work together so that they can be load balanced. What’'s more , the clients only using one network domain name can access the server. So the two servers look like one server to the outside world.

How can I confige the servers ? What about the database? Should I two mysql for each of them ,or one mysql server is enough ?

Thank you very much!!

Message was edited by: handsomeli

Hello

I am not sure you can use two wildfire servers using the same domain (and therefore the same database). I made the try and in fact it works pretty well but users connected on the first server won’'t see users connected on the second server.

This mechanism is like clustering the servers and I don’'t think this is available yet.

One will probably suggest you either to use CMs to share the load or to use several separated domains.

I am not sure the question of one or two databases is in fact relevant. However you probably need only one database unless you want to duplicate the same content on both of them. (If a user tries to connect to the server, it doesn’‘t know which server will be targeted and then user must be defined in both servers so you would need to have the same content on all databases). In my opinion although currentlly using load balanced servers doesn’'t work, I would say you need one single database or a cluster of database.

If you need more details about tests I made, feel free to contact me.

Hope it helps.

Hello pcohen:

According to your opinion, if the single wildfire server can only support 5,000 clients , then it must

fail when there are 10,000 clients connecting to it ? Do you think connection manager can solve this problem ?

The 10,000 clients only know one domain name. This is the precondition . Then ,if you can devide10,000 clients into two parts and servered by two wildfire servers separately , even if users connected on the first server won’'t see users connected on the second server, it is ok!

How can i confige the servers ? What should I do ?

Thank you!

Hello

I did not say the limit was 5000 users. I managed 10000 users on a single server and reached around 80K users with several connection managers (this part is still experimental with large rosters).

If you really want to use two servers, my solution would be to have a single DB. When you start the two servers configure them to target the same database. So both servers will share the same domain and also any other parameters values. If you update a property of one server, keep in mind it will be propagated to the other one at least when it will be restarted.

If you use a load balancing mechanism, I suggest you have a DNS that redirects domain to one or the other server (Using DNS round robin or other load balancing solution). Then connections will be distributed among servers.

Does it help or do you need more details ?

But I really want to warn you that users on separate servers won’'t see each others cannot communicate and so on. It is like users connected on one server are completely separated from other users and you have no idea if you use load balancing mechanism about which users will be on which server.

Personally I don’'t think it is a good idea

Hi,

Wildfire uses the jiveID table instead of database dependent sequences or counters so it will not work to use one database for two Wildfire servers.

LG

Hi,

using one server and one connection manager is the way you should implement it. Wildfire does not support a cluster mode where one database may be used.

LG

Hello it2000,

I made some quick tests with 2 Wildfire servers and it started well and I could make them work sharing the same database. I mean I was able to connect several users on one or another server and make users on the same server chat together.

Anyway I did not make intensive tests because as soon as I saw that I could not see users from other server. By the way, what would be the problem with JiveID ? on what actions ?

The idea to start 2 WF servers sharing the same Database is probably motivated to have clusters of servers to reduce the load and be failproof.

In the current architecture, using several servers is not available.

The CM solution is a very good solution (currently I reache more than 50K users with them) but it has some limits because the server remains the bottleneck - it does the major part of the process. And what about security if the server fails down.

But concerning this question, I would recommend not to use 2 servers using the same domain and focus on connection managers.

Message was edited by: pcohen

handsomeli wrote:

Now I want them to work together so that they can be load balanced. What’'s more , the clients only using one network domain name can access the server. So the two servers look like one server to the outside world.

How can I confige the servers ? What about the database? Should I two mysql for each of them ,or one mysql server is enough ?

I’'m afraid Wildfire Server does not support clustering (which is needed for load balancing). If you really need load balancing, you might want to try another Jabber/XMPP server instead of switching to some proprietary protocol solution that cannot federate with Wildfire Server. Two open source XMPP servers that support clustered deployment are DJabberd and ejabberd.

Hello everyone:

Thank you for your advice! I think I will use DNS to support load balance.

Last week, I configed a connection manager and a wildfire server in different two machines to test their performance. They can only support 800 concurrent users( I start 800 threads to simulate the concurrent users ) . Maybe my PC machines are too low performance( 512M memory each).

If the two machine could have 4G memory and 3.6GHz Dual-Core CPU , how many concurrent users can they support ? What’'s more , my wildfire server is installed in windows XP.

What are your experience and advise? Thank you!

Message was edited by: handsomeli

Hello

It depends where you have a problem on client side ? on CM ? on server ? on Database ?

I mean how do you simulate your clients. Personnally I use tsung.

Here is the config I use:

3 Xeon 2G RAM as connection managers and 1 WF server Xeon (dual) with 4G.

With such a confiuration I reached around 45000 simulatenous users.

I reduced the native Thread Stack Size on CMs by setting -Xss80K and Used 1G for the Java heap memory and I could connect around 15000 users. I run on tests on Linux so I have to update the number of file descriptors that can be opened simultaneously by a user (ulimit -n 64000 for example).

I did not made any improvment on WF server 2/3G for the Java heap were good.

I currently have problems with tests on large rosters but it is another story …

In my opinion you do not need as much CPU on CM as on the WF server. I would bet it is more usefull to have two smaller machines acting as connection managers and a main server more powerfull. But do not also ignore database side because it can have a real cost

Thank you! I will depend on DNS for load balance!