The Application_End event gets fired when the IIS pool is recycled or when you make changes to the bin folder or web.config file. You should change the default IIS setting to schedule a recycle once a day on offpeak hours.
Application_End
It will be fired in one of those situations:
IIS pool is restarted.
Web.config changes.
Application is restarted.