-1

I currently have a dedicated server that we have outgrown and we are moving to another server.

Our current setup was a 8gb W2008R2 server running a W2008R2 IIS virtual machine using VMWare.

We are moving to a 2 cpu 24 gb server with W2012 R2 on Hyper-V.

On our virtual machine we are running iis 7.5 and sql server. Sql Server seems to want to eat up all the memory so I had to cap it at 2gb, which doesn't seem sufficient.

My question is, when I move the virtual machine to the new server, should I create 2 virtual machines, one for sql server and one for IIS? Or should I leave them both on the same virtual machine? Or even, put the Sql Server on the dedicated server and run the IIS in the vm?

I'd like some input on how this should be done, I've not got the experience needed to make the right call.

Thanks!

JohnDoe
  • 183
  • 3
  • 16
  • possible duplicate of [Can you help me with my capacity planning?](http://serverfault.com/questions/384686/can-you-help-me-with-my-capacity-planning) – MDMarra Oct 21 '13 at 15:43
  • Leave a reason for your downvote pls... it doesn't help to resolve the issue or tell me why it's downvoted. – JohnDoe Oct 21 '13 at 16:26
  • 3
    Typically, you'd want to split SQL server to its own server and let it eat all the RAM it wants. Whether it's worth the additional overhead of a second OS and VM depends on your environment, though. – Nathan C Oct 21 '13 at 17:00
  • ok ty I'll go that route ty! – JohnDoe Oct 21 '13 at 17:22

1 Answers1

3

It depends on your usage.

What is your CPU usage with your current system?

How much of it is IIS? How much of it is SQL?

What is your memory usage with your current system?

How much of it is IIS? How much of it is SQL?

Generally speaking, for small operations, combining IIS and SQL servers into one is fine. However, if you start breaking the 75% mark of your I/O maximums, it'd be about time to split up your servers. (75% is an arbitrary number, but it's ideal, because it means you're halfway from 50%, which means your system should be rocking, to 100% efficiency, which means your system cannot perform any better than it already is; planning at this stage will be less stressful than planning at 100% efficiency, because by 100%, your systems are already prone to problems and it's easier to tackle a problem proactively than reactively).

If the combined percentages of usages between IIS and SQL are equal to or greater than 75% or the arbitrary Desired Max Usage Percentage, then you should split them up.

Here's a guide (note, I just put it together off the top of my head, so I don't know how accurate the calculations are yet; and this doesn't account for hard drive bottlenecks or network latency. This also does not take into account poorly written applications that may take up too much resources unnecessarily, which won't change by beefing up a system):

  1. Determine your current latency

  2. Determine how much latency you're willing to accept and change that into an empirical quantitative numeric value. Example; If you are willing to take a little latency; how much? 100ms? 250ms? 500ms? 1s?

  3. Determine if the latency you're willing to accept will be an average over time (ideally, at a minimum, a full 7 days) or an absolute maximum value (ideally, on the day your experience the most load on your server).

  4. a) If the accepted latency is an average, calculate the average CPU and Memory usage values overtime

    b) If the accepted latency is an absolute maximum value, calculate the max CPU and max Memory usage values at the highest load of the day

  5. Determine Current Processing Capability/Memory Capacity

  6. Determine your growth rate percentage per year; if you have no baseline data to compare, arbitrarily assume 10% growth every year or take 1 / (Current_Latency / Desired_Latency) x 100% / Years_System_Was_In_Service, whichever is higher.

  7. Determine the processing power/memory capacity needed to keep your systems under 75% (Desired_Max_Usage_Percentage) utilization for the next Y amount of years, before your next upgrade. Resource_Needed = (Current_Usage_Percentage x Current_Capability) + (1 + (Y_Years x Growth_Percentage)) / Desired_Max_Usage_Percentage

  8. Determine the adjusted value needed to accommodate for desired latency.

Example (CPU) 1:

Current Latency = 1000
Desired Latency = 500
Latency Variable = 1 + (1 / (1000 / 500)) = 1.5
Current_CPU_Usage = 100%
Current_Capability = 2CPU x 3.0GHz = 6.0GHz
Y_Years (to next upgrade) = 3
Growth_Percentage = 10%
Desired_Max_Usage_Percentage = 75%

Minimum Resource = (1 x 6.0) + (1 x (3 x .1))/.75 = 7.73GHz
Adjustment For Latency = 7.73 x 1.5

Result: Upgrade to minimum 7.73GHz
Result to desired latency: 11.60GHz

Example (CPU) 2:

Current Latency = 1000
Desired Latency = 500
Current_CPU_Usage = 70%
Current_Capability = 2CPU x 3.0GHz = 6.0GHz
Y_Years (to next upgrade) = 3
Growth_Percentage = 10%
Desired_Max_Usage_Percentage = 75%

Minimum Resource = (.7 x 6.0) + (1 x (3 x .1))/.75 = 5.93GHz
Adjustment For Latency = 5.93 x 1.5 = 8.90GHz

Result: No need to upgrade
Result to desired latency: 8.90GHz

Example (Memory) 1:

Current Latency = 1000
Desired Latency = 500
Latency Variable = 1 + (1 / (1000 / 500)) = 1.5
Current_Memory_Usage = 100%
Current_Capability = 4GB
Y_Years (to next upgrade) = 3
Growth_Percentage = 10%
Desired_Max_Usage_Percentage = 75%

Minimum Resource = (1 x 4.0) + (1 x (3 x .1))/.75 = 5.73GB
Adjustment For Latency = 5.73 x 1.5 = 8.6GB

Result: Upgrade to minimum 5.73GB
Result to desired latency: 8.6GHz

Example (Memory) 2:

Current Latency = 1000
Desired Latency = 500
Latency Variable = 1 + (1 / (1000 / 500)) = 1.5
Current_Memory_Usage = 50%
Current_Capability = 4GB
Y_Years (to next upgrade) = 3
Growth_Percentage = 10%
Desired_Max_Usage_Percentage = 75%

Minimum Resource = (.5 x 4.0) + (1 x (3 x .1))/.75 =3.73GB
Adjustment For Latency = 3.73 x 1.5 = 5.23GB

Result: No need to upgrade
Result to desired latency: 5.23GB

Note: please take my examples with a grain of salt.

To plan for network capacity, hard disk storage capacity, or hard disk I/O metrics, you'd essentially do similar calculations.

TL:DR; If your CPU or Memory utilization is reaching 100%, you should probably split the IIS and SQL services into their own resources. However, before doing so, you should consider application/resource tuning, as hardware changes can be expensive, and will not resolve inefficient applications.

CIA
  • 1,604
  • 2
  • 13
  • 32