Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC why does my app keep restarting?

Tags:

I have an ASP.NET MVC website that gets about 6500 hits a day, on a shared hosting platform at Server Intellect. I keep seeing app restarts in the logs and I cannot figure out why.

I've read Scott Gu's article here: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx and implemented the technique, and here's what shows up in my log:

Application Shutdown:  _shutDownMessage=HostingEnvironment initiated shutdown  HostingEnvironment caused shutdown     _shutDownStack=at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)     at  System.Environment.get_StackTrace()     at  System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()     at  System.Web.Hosting.HostingEnvironment.InitiateShutdown()     at  System.Web.Hosting.PipelineRuntime.StopProcessing() 

It seems to occur about every five minutes.

Are there any other ways to debug this?

UPDATE: Here are the application pool settings mentioned by Softion:

CPU

  • Limit : 0
  • Limit Action : no action
  • Limit Interval : 5 Minutes

Process Model

  • Idle Timeout : 20 Minutes
  • Ping Maximum Response Time : 90 Seconds
  • Startup Time Limit : 90 Seconds

Rapid-Fail Protection

  • Enabled : True
  • Failure Interval : 5 Minutes

Recycling

  • Private Memory Limit : 100 MB
  • Regular Time Interval : 1740 Minutes (29 Hours)
  • Request Limit : 0
  • Specific Times : none
  • Virtual Memory Limit : 0
like image 238
Dave Thieben Avatar asked Mar 16 '11 01:03

Dave Thieben


People also ask

Is ASP.NET MVC discontinued?

ASP.NET MVC is no longer in active development. The last version update was in November 2018. Despite this, a lot of projects are using ASP.NET MVC for web solution development. As to JetBrains' research, 42% of software developers were using the framework in 2020.

Is ASP.NET better than MVC?

MVC provides better support to TDD (Test driven development). TDD is related to the test first programming concepts of extreme programming. It helps us to reduced time in reworks and helps create loosely coupled code. MVC enforces separation that reduces complexity of project structure.

What is the starting point of MVC application?

The entry point for every MVC application begins with routing. After the ASP.NET platform has received a request, it figures out how it should be handled through the URL Routing Module.

What is ASP.NET mvc4?

ASP.NET MVC 4 is a framework for building scalable, standards-based web applications using well-established design patterns and the power of the ASP.NET and the . NET framework. This new, fourth version of the framework focuses on making mobile web application development easier.


1 Answers

You can easily grab the reason of the shutdown by HostingEnvironment. You read Scott Gu article, but you missed its comments.

     var shutdownReason = HostingEnvironment.ShutdownReason; 

Shutdown reason codes

If the reason is HostingEnvironment, check the IIS application pool parameters controlling recycling. I've put a red dot near each one. Check the description in the bottom help box in your own copy for full info.

You can ask your provider to give you the applicationHost.config file where all these parameters are set. They find it in C:\Windows\System32\inetsrv\config. I'm sure you can also get them using some .NET api.

enter image description here

For 6500 hits a day, which is a very low hit rate, i'm betting the "Idle time-out" is set to 5mn.

Update (moved comments to here //jgauffin)

  • CPU Limit 0 = disabled.
  • Process Model Idle Timeout : 20 Minutes (20mn without a request recycles your app).
  • Rapid-Fail Protection enabled (5mn). You need to know the maximum failures count. If your app throws more than this exception count in 5mn it will we recycled.
  • Private Memory Limit : 100 MB. Yes you should profile, this is a low limit.
  • Regular Time Interval : 1740 Minutes (29 Hours): it will recycle every 29h.
  • Request Limit : 0 (disabled).
  • Virtual Memory Limit : 0 (disabled).
  • Rapid-Fail Protection enabled (5mn). You need the maximum failures count. If your app throws more than this exception count in 5mn it recycles. If it recycles every 5mn this should be the thing to check. There should be 0 unhandled exception in secondary worker threads. Wrap your code into a try catch there.
like image 110
Softlion Avatar answered Oct 04 '22 05:10

Softlion