Advertisement

What hardware to use for a database server?

Started by April 22, 2013 04:20 PM
11 comments, last by tstrimp 11 years, 4 months ago

(Severely altered from original post)

I'm starting to look at startup expenses for a game I hope to have finished soon. I have one server online, that isn't particularly powerful right now. But as the game begins to expand, I know I'll need a couple real servers soon. So my questions relate to what physical hardware to get.

Database, Windows 2008 R2 Data Center, SQL 2012 Enterprise.

What System specs should I be looking at.

I'm planning on High Speed SSD Drives, Raid 10 (striped+Mirrored) as the focal point of its performance.

Atleast 2T final space.

Ram, should be fast, but not spending a lot here.

Processor, atleast 4 cores, 2.8Ghz or better.

Any thoughts, on areas that might see bottle necks? or specific recommendations?

Moltar - "Do you even know how to use that?"

Space Ghost - “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer."

Dan - "Best Description of AI ever."

What do you actually need? This isn't really a production question. This is more of an IT or tech lead question.

Part of your development process should involve stress-testing the machines.

You state that plan on having 5000 users. Did you not test this? Perhaps you did not learn from games like Diablo 3 and Sim City?

If you plan on having 5000 users, you must test your system under that type of load. Either directly test with 5000 virtual machines, or have a way to simulate it as best you can.

1) Most work is in quick processing of data, Some DB interactions, mostly logical processing/validation( server controls core game logic to help protect from hacking)

2) My initial thought is that the Database machine should be get atleast 4x drives, Raid 10 (mirrored/striped),

3) atleast 1 T available space. (projected long term needs)

4) Processor should have fast process switching, minimum single i7, 2.8ghz.

5) The Service host, does not need a lot of hd space, still mirrored, physical HDD should work fine.

6) Plenty of RAM, perhaps 32G, Fast. Processor should be stronger, like a Xeon E5, (not overclocked).

1. These database interactions must be stress tested. As database use increases, so does the risk of deadlocks, livelocks, and resource contention.

2. Why? What numbers do you have that makes you think it needs to be RAID across 4 drives?

3. Why? What numbers do you have that says you need 1TB of space?

4. Why? What numbers show that an i7 is necessary? What numbers show a much cheaper i3 or similar couldn't do the job?

5) Why? What numbers show this?

6) Why? How do you know it is enough? How do you know it is not too much?

I know this area is more business/marketing perspective, but the more technical areas don't really have a section that seems like it would work for the technical hardware needs of release time, and this is a production related question.

I'm not sure how you figure that.

The management team might happen to know what hardware is required for the back-end, but that is not their job. That work is delegated.

Also, in what insane world is the marketing team responsible for the implementation of the critical infrastructure servers?

This is entirely a technical question.

Advertisement

(Severely altered from original post)

I'm starting to look at startup expenses for a game I hope to have finished soon. I have one server online, that isn't particularly powerful right now. But as the game begins to expand, I know I'll need a couple real servers soon. So my questions relate to what physical hardware to get.



Database, Windows 2008 R2 Data Center, SQL 2012 Enterprise.

What System specs should I be looking at.

I'm planning on High Speed SSD Drives, Raid 10 (striped+Mirrored) as the focal point of its performance.
Atleast 2T final space.

Ram, should be fast, but not spending a lot here.

Processor, atleast 4 cores, 2.8Ghz or better.

Any thoughts, on areas that might see bottle necks? or specific recommendations?

Looks like it should work. Or maybe it won't. Maybe that one thingamajig will give you problems. Possibly, though, it won't.

Thing is, without looking at the numbers and hard data that frob was talking about, real-world testing data and logging of performance of your current server and tests of your server under expected load, there is literally nothing we can tell you right now about your question. This is a question best asked of your team, since they are the ones likely to know about what will be necessary. Your average forum goer just won't know enough of the technical details of your game to give any kind of rational response to such a vague question.

My apologies on posting to the wrong forum. There is no technical forum on this site for dealing with Production (or alternatively, server) issues. And seeing as this is the only forum on this site with the word "Production" in it, I had hoped that technical production might be a part of it. Due to phrases like "in what insane world", and other more subtle, yet sharp, responses, I presume your post was written in frustration and/or annoyance. My apologies again on having written this here. Could you recommend a forum on this site that would be best to talk about servers for production purposes?

Despite the mistake in location, you had also asked questions, I will try to address some of the issues you posted:

You state that plan on having 5000 users. Did you not test this? Perhaps you did not learn from games like Diablo 3 and Sim City?

No, I did not test this. When I was talking about getting ready for production, doing perf tests were going to be part of it.

However, I think I understand your confusion on this. I presume you are part of a team where load testing and performance testing is base lined on development machines, or servers with random guesses as to what it might need. I can understand using dev machines to try to get an initial idea as to the performance, but I'd prefer to use a machine that is already what I would consider a "Database Class" machine to begin load/perf tests instead of a machine littered with other development apps. Same thing with selecting a more App Centric Server for load/perf on the service side.

The purpose of this post was to help isolate the initial hardware specs (improved guesses) on the initial baseline servers. If the baseline is good enough, those will get recycled into production. I'm not part of a well-funded team, so I don't have a lot of options in replacing lots of machines selected by poor choices, so I don't want to purchase these initial machines blindly. And was hoping for more of a useful response at defining a Database Class server vs a Service Class server.

Moltar - "Do you even know how to use that?"

Space Ghost - “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer."

Dan - "Best Description of AI ever."

Looks like it should work. Or maybe it won't. Maybe that one thingamajig will give you problems. Possibly, though, it won't.

- Thanks, Vague, but probably about as clear as can be expected. Its what I'm initially expecting to try, and hoping will work well.

Based on both responses from here, I have to agree that it might be best to support to do some initial load testing on dev boxes to identify/analyze weak points/strengths, and select the first server to help improve the shape of its data handling better.

Thanks.

Moltar - "Do you even know how to use that?"

Space Ghost - “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer."

Dan - "Best Description of AI ever."

This isn't really a production question. This is more of an IT or tech lead question.

Seconded. Ask your tech lead what server to use.

-- Tom Sloper -- sloperama.com

Advertisement

Seconded. Ask your tech lead what server to use.

Agreed. Can you recommend a better forum to use here? I am the tech lead. I've presented a few ideas as to what I feels makes a DB server over an app server. I posted only for additional advice.

Moltar - "Do you even know how to use that?"

Space Ghost - “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer."

Dan - "Best Description of AI ever."

Since this is for a startup game, do you ever consider hosting your database on AWS? At least your game right now won't have a lot of users, but when it grows, AWS allows you to increase workers on demand. Once you have done a real cost-benefit analysis that shows hosting your own machine saves money, then you can start thinking about the hardware.

You can guess all you want to. You might be overspending. You might discover (to your own detriment) that you grossly underestimated.

The only way to know is to try it and see.

Hopefully you have built your game engine to support automated tests. If not ... well, now is a good time. Basically this build has the renderer disabled but otherwise is the full game. From the command line it should connect to the game server, do whatever login and lobby stuff is required, then create or join the game. It should play a complete game as a randomly selected AI player. Then it should gracefully exit.

With that complete write a script to launch a bunch of these processes. So if one machine can handle 500 of these automated clients you'll need to have 10 computers running the script, and you'll have your estimated 5000 concurrent users. (It is often surprising just how many non-rendering instances of a game simulation you can keep running simultaneously.)

This has a very positive side effect of detecting bugs in your app in addition to bugs in your server. It especially helps find problems in the AI when you find one client has stopped responding.




Each multiplayer game I've worked on (currently 8 of them) has had a small stack of machines dedicated to this process for at least half of the development cycle. The server and clients get stopped and shuffled when the nightly build completes. The server gets wiped and reconfigured to default. Then all the automated clients create a new user, connect to the game, start a game, play games using the AI settings, disconnect, and repeat.

Errors are logged, crash dumps are kept and used for debugging, etc.


From those tests we were always able to know exactly what hardware is needed for a typical load, and perhaps more importantly, the maximum load before the machine starts to have issues.

I strongly suggest to look into cloud services.

Every time I read about "SSD" and "RAID" in the same sentence... I have itches.

Previously "Krohm"

This topic is closed to new replies.

Advertisement