I have a test environment for my Asp.Net 4.0 web applications. It runs on a Dedicated Windows 2003 Webserver (IIS 6) But it's slow! The machine never has 100% cpu and the same for memory. When I run the application on the production server, it's fast as hell.

I think that it has to do with the horrible bandwith the testserver has. It uses a remote SQL server. How can I check if the remote SQL is the bottleneck? And how can I check if the upload of the machine is the bottleneck?

Thanks in advanced, JP

Edit: The network speed: Average ping from test to database is 33ms. www.Speedtest.net gives testserver: 10mbit down/0.8mbit up. Remote databaseserver: 94mbit down/74mbit up. But 0.8mbit up (testserver) is about 100 kilobyte per second. Should be enough for several simple sql queries? or not?

  • Why do you even test something on a server that is outdatecd by two software versions? How powerfull is it? I f the CPU is full, then the rmote SQL is unlikely to be the culprit. – TomTom Oct 18 '11 at 10:53
  • CPU is never full ;) and how can I verify that it is the remote SQL? – JP Hellemons Oct 18 '11 at 10:55
  • Ok, misread that. it isl ikely - how big is the pipe and delay to the remote sql server? Delays there kill anything. – TomTom Oct 18 '11 at 11:01
  • Is the production server also hosting the SQL Server? My assumption is that the SQL Server is local (either same server or another server in a rack at a data-centre) so that your test connection has a much slower (and longer) connection. That in itself doesn't necessarily mean your application will crawl on the test server but it depends what sort of queries and volume of data is being passed between your app and the SQL database. – Dan Oct 18 '11 at 11:09
  • What is the "upload of the machine"? Uploads speeds on ADSL in the UK is a fraction of download speeds (use something like speedtest.net to check it) – Dan Oct 18 '11 at 11:12

I have used test environments setup the same way in the past on a similar speed connection to yours and it was barely noticeable that the SQL Server was somewhere else (testing only, never tried heavy usage).

The only exception is when a ton of data is being transferred to the app rather than small amounts (you can see the same effect if you remote desktop onto the remote server, run a query with a lot of results and the results are returned within 1-2s - run the query remotely and the download takes 3x/4x/5x that depending on your connection).

Can you add a couple of date counters to your web-app to report time taken to connect to the SQL Server, time taken to get results, time taken to display page? Or you might be able to get the same using SQL Trace? (and get a comparison for the production server)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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