4

Additionaly to the infamous slow-start problem, which occurrs in ASP.NET application running on IIS, we experience another one.

After a fresh application start (e.g. iisreset) the first request takes some time as usual. However in the current application every other request to a page that hasn't been loaded yet takes about 10-12 second on the first hit!

After the page has loaded, all other requests to the same resource are fast again (80-130 ms usually). This is also true for first loads from other client machines, so this is not a client-caching problem.

For example:

Machine | Request           | Duration |
A       | GET /             | 43000 ms | (wakeup)
A       | GET /             |    90 ms |
B       | GET /             |    90 ms |
A       | GET /registration | 12000 ms |
A       | GET /registration |   110 ms |
A       | GET /registration |   110 ms |
A       | GET /registration |   110 ms |
A       | GET /foobar       | 11000 ms |
A       | GET /foobar       |    85 ms |
B       | GET /baz          | 10000 ms |
A       | GET /baz          |   100 ms |

The interesting thing is that this doesn't happen when we run the application on our DEV machines (debug=true, etc). Only when we publish the website (debug=false, precompile, etc) this behaviour occurrs.

All static resources are bundled and cached properly and there is not one request that may take more than 1 second really. The application pool and the website are configured to start automatically and run forver.

I would greatly appreciate any hint.

Igor Lankin
  • 1,416
  • 2
  • 14
  • 30

1 Answers1

0

You can try to precompile the Razor views.

You can find an example here although the author presents it as a way to find syntax errors in views at project compile time.

Further materials can also be found in the answers to 'Can Razor views be compiled?' question.

Community
  • 1
  • 1
Andrei Rînea
  • 20,288
  • 17
  • 117
  • 166