Subject Virtual Machines, is it realy good enough ? was Re: [firebird-support] Re: Server hardware advice needed
Author Alexandre Benson Smith
Hi !

Em 31/7/2011 19:02, Joe escreveu:
> Geoff and Milan,
>
> Thank you for your suggestions. I think virtualization, and having it hosted by a datacenter is a great idea. So that way, we can adjust as needed.
>
> -Joe
>
> --- In firebird-support@yahoogroups.com, "Joe"<joe@...> wrote:
>>
>> 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,
>> Joe
>>

Sorry if it looks like OT, but I don't think it is...

I use VM's (Oracle VirtualBox) on my notebook, the performance is quite
good for general work, but I can see that when running a heavy process,
such as datapump, the performance is much slow than running the same on
the bare metal. That was a year ago, so I don't have numbers, but I
stopped the process on the middle, installed firebird on the real
machine and did it again from start because I just thought it was to slow...

I had just one experience on production database on VM, that was an old
version of VMWare, I was not the responsible for that instalation and
don't have enough knowledge about it, another guy configured it all, and
just provide me a VM with CentOS, the back-up/restore cycle was 20 times
slow on the VM, again, the costumer asked us to move the Firebird server
out of the VM so they can work as quick as it did on the old server.

As I said earlier, I have no experience on it, and perhaps it was just
bad configured by the other guy or used an old version of VM-Ware that
was too slow, some questions for you that have used it in production
servers:

Does it runs with good speed ?
Do you know the speed difference between a VM and the real machine ?
There is some tricks that need to be done so it runs with an acceptable
performace ?

I know I didn't provided to much information, but I don't even know if
that server still uses the virtual machines, but as far as I could see
the disk troughput was significantly slow on the vm.

Could anyone say something about virtualization and FB in general ? Tips
and tricks are welcome...

see you !