we are developing an iOS-based game with multiplayer support. so far everything seems real good but now we want to make sure if server could handle 10000 clients or not. any idea how can I make sure server will survive that much traffic?
2 Answers
For traffic load testing there are many tools, but you're going to need to test other things as well that will be specific to your game server because network traffic is only one part of the equation -- the processor utilization and constant database queries are two others that immediately come to mind as important factors that you'll want to measure (there will undoubtedly be other factors as well, which you'll have to determine based on your knowledge of how your game server works).
A really good way to do this might be to write a "game player simulation" client program and run multiple instances of it on multiple computers. The down side is that this could require the use of a lot of computers, but some local universities might have big computer labs that you could run these on (the professor might be interested in your test results since university professors tend to be genuinely curious about good research).
Your client may not need to be as sophisticated as a player, but you may want to make sure it does the following things (it doesn't have to be very intelligent as long as it can be slightly more functional than a drunk software developer who really shouldn't be driving herself home, so you might also want to flag the characters in a special way so that they can do silly things like walk through walls, have unlimited budgets to buy randomly selected goods from in-game merchants, have endless supplies of ammunition, and whatnot):
- Send random chat text on a randomly timed basis
- Navigate in random directions throughout the world (but tend to stay closer to major cities)
- Randomly choose to fire weapons in random directions when other players are nearby
- Buy/sell random goods from merchants, and occasionally dump items throughout the world
- Randomly light things on fire (or cause other forms of localized destruction)
- Get hordes of wild animals upset and run into a busy town with them chasing after, then randomly decide whether or not to logout (if chosen to logout, perhaps those wild animals will start attacking others in the town?)
- Heal injured players
- Set off randomly selected magic spells in crowded places
- Cook raw food, process raw lumber and other materials (such as from mining), etc.
- ...other simple tasks that your players are likely to do regularly
If you estimate that you'll have 9,000 players at one time, try to test this out with at least 3 times that number so that you'll know how your servers can handle a load of 27,000 simulated busy players (a lot of players tend to idle, especially the social types).
Also (and this is very important), if you do this, please, please, PLEASE, login with a regular character and record a video of all these computerized players doing stupid things and share that video with us here so we can have a good laugh (I'm thinking that "drunken barn dance" might be a good title for this movie if you can find just the right in-game scenario)! ;-D
-
2\$\begingroup\$ Thanks alot about your answer, I guess we have to test using these simulated players, and think ultimately we will use one of cloud services to run clients. just as a sidenote, it's a multiplayer game but players can only navigate through world and hunt each other, so almost none of those tasks you mentioned will be implemented in out sample clients! I hope next person with same question is about to release life-simulation game to test all those things! \$\endgroup\$– Ali1S232Commented Sep 21, 2011 at 23:43
-
\$\begingroup\$ Well, just test what applies to your game (you're welcome!). I didn't know anything about your game's features, so I tried to include many possibilities in the hopes that it would be covered. \$\endgroup\$ Commented Sep 21, 2011 at 23:51
-
\$\begingroup\$ Some games also start out with an early beta pre-release, but this can be a difficult decision because there's the nasty factor where a player may find they don't like the game during it's beta stage, and then never come back to try it again (even though the problems they encountered got resolved). \$\endgroup\$ Commented Sep 21, 2011 at 23:52
-
2\$\begingroup\$ -1, unrealistic answer. Female game developers don't exist. (Jks, +1, agreed on visually sharing the test results). \$\endgroup\$ Commented Sep 22, 2011 at 3:53
-
3\$\begingroup\$ I'll add that I did exactly this, for an MMO on a handheld console; simulated players were the best thing ever, for testing how servers would cope under stress. We also held a closed beta (limited to about 500 people), and I used the generated statistics on the beta testers' behaviour to tune the simulated players to behave as much like the real players as I could manage. After the beta was over, I set 40,000 simulated players loose to play havoc with the servers. Much mayhem! \$\endgroup\$ Commented Sep 22, 2011 at 5:27
This is an answer for an old question, hope it can be useful for those who get here by search engine. Netgend has a performance test platform can emulate 50,000 VUsers and can do all the flexible client emulations.
See the blogs, especially
- Networking made easy
- extracts fields from server responses
- Performance testing with binary data
Note that the message processing is not restricted to http messages, it applies to all messages.
Hope it's helpful.