3
votes

Background: We are trying to migrate a large, complex web application written in classic ASP from Windows Server 2003 to Windows Server 2012 R2.

Everything is working without errors, but the new server is extremely slow to serve the ASP pages. With a single user on the site, response times in the order of 2-3 seconds for ASP pages are common. Equally large AJAX calls and JavaScript pages are served and process in under 100ms.

When the site receives a moderate level of load (more than approx. 50 users) it becomes unusably slow. Normal load for the the production site is several thousand users.

There does not appear to be a correlation between the amount of data returned or the database connection. We are using SQL Server 2008 R2 for the database.

The Web application server is in a DMZ and uses a hosts file entry for the database server which is in our general intranet. Database queries process extremely fast (within milliseconds).

I've tried profiling the web server memory usage, disk I/O and network usage, and found no evidence of memory leaks. Query profiling shows no lag in processing database calls.

Update after running Failed Request Tracing

  • I set up tracing to be triggered for classic ASP requests taking longer than 1 second
  • Maximum time shown by detail logs for each trace from request start to request completion: 140ms
  • Total request times logged ranged from 1094ms to 1453ms - so the actual request is taking an order of magnitude longer than the events logged by the failed request trace.

What are common fixes for this performance problem?

3
You will need to profile your request and see where is the bulk time spent,i don't think it is server relatedTheGameiswar
@TheGameiswar - thank you for this information. I've updated the question with a summary of FREB results.Kate Paulk
I am not 100% sure on how to trace a request end to end,i provided some suggestions,as we have used FREB in past to determine failures,further it also shows time taken for each event in page life cycle.I would also check iis logs to see if this is happening with all requests or only someTheGameiswar
@TheGameiswar - it's happening for all requests for ASP pages. *.asp is slow. *.js, *.css, *.html is not.Kate Paulk

3 Answers

2
votes

There are reports of classic ASP sites being slow if the connection string uses the machine name\instance name instead of an IP address, especially if SQL is running on a non-standard port. Maybe try changing the connection string, e.g.:

Server=10.10.10.123,1433\myInstanceName;

Reference: forums.iis.net

1
votes

I am unable to comment since I do not have enough reputation, so asking question as an answer. I will remove this once I get the answer

  • What is the driver you are using to connect in your connection string ?
  • I did see your comment on host file, can you please try direct IP in the connection string. Please do not remove the host file.
  • Can you try a small new web application in asp just with minimal database listing. is that also slow?
  • Again try the same new application without a database connection and time the difference.
    • Do you have on error resume next in the code, are you failing on any file / log permission but that is not getting reported.
0
votes

Try disabling Microsoft Defender. There are serious slowdowns after an update. They modified vbscript.dll which is what executes ASP code. If you cannot live without Windows Defender, you can replace vbscript.dll with an older version.