1

We have a RIA application that 300 clients concurrently use in an intranet environment. Together they make 30 calls / second to IIS (asp.net) (actually it's 60 but calls are loadbalanced over two IIS servers). Half of the calls is getting an asset (Caching Profile is used so most of the time cache is hit), the other half is saving data to a sql server.

Retrieving an asset is done with a aspx page. Saving the data happens via WebORB, asp.net and Sql Server. So some processing is needed by WebORB (amf decoding, GZIP, ...). We also use Spring.NET, and some of the container objects have a request scope (not a lot).

IIS servers --> Virtual machines, 4 CPU, 2 gb RAM. They are based on Windows 2008 x64 SP2 Enterprise Edition.

Sql Server 2008 is used.

Apparently CPU of both IIS serers is constantly around 60-70%.

Now, my question, is the load of 60-70% acceptable and how could we possible bring that down to less % (maybe using only one IIS server)? + Is 2 gb RAM enough?

Assets can be up to 20mb, but on average, they are about 30kb. (the load of 60-70% is achieved with assets around 30kb).

The data that gets saved with weborb is very small (2kb) and is just one object.

Lieven Cardoen
  • 517
  • 2
  • 8
  • 17

2 Answers2

3

Depends a LOT on the CPU. And I mean the physical one. One thing to watch out for is - the CPU measurement WITHIN the VM may be off. Get it checked OUTSIDE - how loaded is the SERVER. Depending on the virtualization CPU you may not really have a lot of load.... and see the CPU fully loaded.

  • The load 60% to 70% is acceptable. Obviously you could handle nearl twice that.
  • Ram look low, but then - you have to decide (as in: is the 2gb USED? you dont't say).
  • Using one Server will not be better unless you don't manage to acutally distribute sticky (i.e. every client only going to ONE server), which most load balancers support (mostly - but mostly is good enough here).

Never forget that GZIP is a CPU hog. If you are in an intranet, you may be better off turning compression OFF and using a fast network (1gb - should be standard anyway).

Besides that, I am sorry, not a lot more can be said. I woudl attach a profiler and figure out where the CPU load is spent. Maybe (if you are lucky) you have some really crappy code that you can optimize.

TomTom
  • 51,649
  • 7
  • 54
  • 136
  • TomTom, are you the only one on server fault? ;-) Really a lot of usefull info you gave me here. What concerns the CPU, the virtual server thing is something the customer sets up. I don't have a lot of experience with that. I would have to ask them. If CPU of physical server is constantly about 5%, then the VM could get more CPU? – Lieven Cardoen Mar 25 '10 at 12:03
  • Well, if the physical CPU is at 5% and the CPU in the VM at 50% - the then obviously the counter in the VM is off (which may happen). One thing to remember, for example, is hat modern CPUs try to save power (and reduce clock speed on cores). I dont think that the virtual machine realizes that ;) Basically - if you are CPU bound, alays make sure you ARE so, and that means on the real machine. – TomTom Mar 25 '10 at 12:52
  • One thing jumps out at me is that you have 4 vCPUs in the IIS machines. There are situations where fewer vCPUs will perform better than more vCPUs - I've not been in the situation myself but I've read about it. It would be worth researching, and possible even trying - change the config to 2 vCPUs on the IIS servers and see if performance improves. – mfinni Mar 25 '10 at 12:59
  • @mfinni thx. Do you have an explanation for this or a link? – Lieven Cardoen Mar 25 '10 at 15:12
  • 1
    http://serverfault.com/questions/85444/vmware-esx-server – mfinni Mar 25 '10 at 19:17
  • http://serverfault.com/questions/100320/optimising-mssql-2008-server-inside-vmware-esxi/100371#100371 - from my question. I dropped it to 2 vCPUs and noticed a dramatic increase in performance – Mark Henderson Mar 25 '10 at 23:03
  • Interesting. I wonder how that would go for Hyper-V - i assume similarly. This basically means... scheduling multi core VM's is best done with a LOT more cores in hardware (like 4 cores on coming 8 core processors) and even then they will have a hard time getting their full slice. VERY interesting. – TomTom Mar 26 '10 at 06:31
1

Is 30 calls / sec a lot for one IIS? Hell no, that is nothing.

Our Content Management site has well over 300 calls / sec during peak load... again that is nothing.

But as TomTom mentions there are a lot of factors that must be taken into consideration. The primary one is the application.

Jeff
  • 1,018
  • 1
  • 10
  • 14