Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm interested in modelling various server/network configurations for a web application. I'd like to know in advance which parts of the system are going to be bottlenecks, and whether the bottlenecks are bound by CPU/Memory/Network etc.

One think I've been thinking about is taking a single test server, and setting up each 'real' server as a virtual machine on this, configured as they would be in the wild. I'm going to try this, but wanted to ask the serverfault comunity if anyone has tried this approach before. Is it viable?

I'm not expecting benchmarks, or anything like that of course, but am thinking it might be useful for modeling relative performance, highlighing bottlenecks, and providing a sanity check on the architecture.

share|improve this question
add comment

2 Answers

up vote 5 down vote accepted

All that will be good for is sanity checking your overall architecture, and ensuring that all the bits involved are able to get where they need to go.

Other than that, hardware and network will be significantly enough different than production that any performance issues or bottlenecks you find may or may not be present in production.

share|improve this answer
1  
IT allows a lot,m but not scalability and bottleneck testing, OUTSIDE the "what, the sql server eats all my IO because i do not know what an index is" style of overloads. But it is VERY good to validate in general that your setup scripts work for example. –  TomTom May 17 '12 at 8:33
    
You can do some very limited bottleneck testing by using resource reservations on disk/CPU. This isn't a good method though -- Contention between the VMs trying to access the host's resources will skew any results. Like @ErikA said - good for architecture (and failover) tests, but not much else. –  voretaq7 May 17 '12 at 15:04
add comment

The only way it can be viable and produce worthwhile results is if each virtual machine has an identical structure and resources to the production servers. Whether that's achievable or not only you can say, as we know nothing about your infrastructure.

I've never done this on the scale you're talking about but have used virtual machines to replicate production web servers and thereby experiment with configurations off-line before implementing changes on the live system.

share|improve this answer
    
Regarding resources. I'm not going to be able to give the VMs exactly what they would get in a live setup, but I was thinking of 'scaling down' everything by a factor (e.g. 4) - i.e. everyhing has a 1/4 of the memory/CPU etc. it would have normally. I was then planning on load testing it, and seeing what breaks first. –  UpTheCreek May 17 '12 at 8:55
    
@UpTheCreek, scaling down resources seldom gives proportional results, so in your case I'd be extremely cautious about reading too much into the results you get. –  John Gardeniers May 18 '12 at 10:52
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.