Jump to content

Multimangos


Recommended Posts

  • Replies 159
  • Created
  • Last Reply

Top Posters In This Topic

Maps use lot memory and then triggring data swaping or not allow use disabled map unloading and use aditional time for map loading.
What are performance bottlenecks in Mangos anyway? Suppose we put _lots_ of memory into server, what will be the next candidate for optimization?
Link to comment
Share on other sites

But it doesn't have anything to do with multiprocessing. It's more of database server's load balancing capabilities and it's deployment on a separate machine. I couldn't think of anything more than vmaps.

Thats correct, but you asked for bottelnecks, and the biggest bottleneck is a unoptimized DB, when youre mysql process stucks mangos can't do anything against this...multiprocessing might be better for multirealm system and there performance, but has no effect on the mysql service

Link to comment
Share on other sites

Yes, MySQL can be slow, but most database stuff is loaded into memory anyway, so the only time it calls MySQL is for character data, which is fairly non-frequent (on loading a character and saving them, which is every few minutes) Optimizing mangos would make a big difference on large scale performance.

Link to comment
Share on other sites

  • 2 weeks later...

Hi, I will add my little opinion here. I generally agree with Alex`s idea. So the really quick description of multimangos architecture:

1) realmd remains unchanged

2) all clients connects to the supervisior server (which would be the hardest part), announced as realm in realmlist

3) "behind" the supervisior there are several game(or map) servers (simillar to curent worldd)

4) supervisior handles the easy and fast packets (like chat)

5) more complicated opcodes are routed to game servers, where they are executed

6) the game server manages most of the game logic (ie AIs, spells, colision calculations)

7) 1 game server can run more maps (ie all instances, battleground server,...) 1 map = 1 thread

8) access to the world database perform all game server on their own

9) access to the character database is made via the supervisior, which solves the race conditions in creating new items (mails, characters...)

10) communication between supervisior and the map servers is made by TCP/IP sockets, probably 1 connection per map.

I hope this will help you deciding how to write it ;)

Cheers Tabak

Link to comment
Share on other sites

8) access to the world database perform all game server on their own

may fail. because how to synchronisation between game servers? :-D

the worlddatabase is normaly not changed, only when you change something with a gm-command (like spawning creatures), and for this case you could implement a ZMSG_WORLD_DATABASE_CHANGED which will be send to the single map-servers.

4) supervisior handles the easy and fast packets (like chat)

i would create an own process for the chat too

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...
Great work Derex, as usual.

Btw, can you pls shortly explain me what do you mean with "proxy" for MaNGOS?

Ty

don't know if i am right, but think it is the part redirect the packets send from client to the server cluster parts like maps or so

Link to comment
Share on other sites

the worlddatabase is normaly not changed, only when you change something with a gm-command (like spawning creatures), and for this case you could implement a ZMSG_WORLD_DATABASE_CHANGED which will be send to the single map-servers.
It's not like we're using some binary protocol to send opcodes, so...

You people should jump on the IRC if you want to follow development more.

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 months later...
  • 6 months later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use