Subject Server hardware advice needed
Author Joe
We are planning on offering our application as a hosted solution, using Windows Terminal Services. We will need to put together a test server, and then hopefully once it's stable, be able to buy more identical servers, and replicate them with a hard drive image, so that we can easily add more customers as demand grows. These will be co-located rackmount servers. Not having done this before, I need some advice on hardware specs. I don't want to underbuy, and end up wasting money on hardware that we have to replace. On the other hand, I don't want to way overbuy and spend more than we have to. I am hoping to get some advice here.

Here are some details about our offering:

This is a Windows desktop application, which currently runs under Windows XP, Vista, and Windows 7. This offering will use the same application, but run on Windows Server 2008. All clients will connect to the server via Terminal Services.

We will have only one "customer" on each server. Each customer will have only one database. Although we may offer this hosted service to single-location customers, most of our customers will have multiple locations, and each location will have several clients. Each client will be connecting to their company's server (hosted by us) via Remote Desktop. Each of these remote desktop clients will be running an instance of our application on the server inside their Remote Desktop session. All of these instances of our application will run against a single Firebird database, which will be running on the same server (unless there's a compelling reason to have a separate server hosting the database).

The majority of our customers using this solution will have between 2 and 4 locations, and each location will typically have 3-6 clients. So bottom line is that we're looking at each server accepting about 6-25 remote desktop connections, 6-25 instances of our application running, and 6-25 local connections to a single local database. Most of these clients will all be connected to the database at the same time, but will genearlly NOT be all reading/writing the database at the same time. I'd say roughly 30-60% of these clients will be fairly active. This is a retail POS application, and this 30-60% would be the POS stations ringing up sales. The rest of the clients would be used for misc. tasks, and only used sporadically throughout the day. Off the top of my head, I'd say that the clients will be doing roughly equal amounts of reading vs writing the database.

For reference... Currently, our application runs on Windows boxes (XP thru Win7), with multiple clients (again typically 3-6, and sometimes up to 10) connecting to a single server on the LAN. We generally don't have any serious performance issues, unless their server is running on old hardware against a large database. This is running their clients and servers on run-of-the-mill desktop PC's that they buy locally.

Typical single-location databases are in the 30MB-150MB range, depending on how much historical data they have. A 5-location database that has a fair amount of history may be 750MB or so.

We will be using Firebird 2.5. The application uses IBObjects.

Questions that come to mind right now:

1) Processor(s) - I'm looking at servers with Intel Xeon processors. From what I can tell, they're offered as 4-core (8 CPU threads) and 6-core (12 CPU threads), and I can have 1 or 2 of them (up to 24 threads, which gets quite pricy). Will a single 4-core CPU be enough? Benefit of multiple physical CPU's, vs more cores? Specifically as it relates to Firebird (and I guess Terminal Services)?

2) Run superserver or classic? (I think this is partially related to #1 above).

3) Suggestions on amount of RAM?

4) Drives - I'm thinking about utilizing solid state drives to boost performance. I'm thinking about a regular HDD to run the Operating system, and a pair of solid state drives in a RAID 1 configuration to hold the database. Any better suggestions? Will the solid state drives make much difference in our situation?

5) 32 or 64 bit version of Windows Server? Our application is 32-bit, but runs fine on 32 or 64 bit versions of Windows 7 and Vista.

6) Anything else to consider that I haven't mentioned?

7) Any other pieces of information that would be helpful for me to provide? I'm sure there are some.

8) Any particular hardware brands to consider (or stay away from)?

Thanks in advance,