Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeOur CommunityOur CommunityCommunity Membe...Community Membe...KeepAlive module without external componentKeepAlive module without external component
Previous
 
Next
New Post
5/21/2007 9:07 PM
 

Hi Jesse

Yes the new version installs as you said it would.
Now installed on my 2 test sites which have little traffic. 4.41 and 4.51

I will watch the logs and report back.

Thanks for this module and for your time spent supporting it.

Ian


Mutate and Survive
 
New Post
5/21/2007 9:09 PM
 

Hi Nik

I "use" smarter stats and this picks up pings to keepalive.aspx.
I will have a look to see about exclusions.

Thanks for your points and time.

Ian


Mutate and Survive
 
New Post
5/23/2007 2:56 PM
 

I have read much on this Forum regarding KeepAlive code running in the webserver which periodically issues a series of HTTP GET web requests to keep web resources alive. From the postings it would appear that one common technique is to trap a HTTP module Dispose method to drive such KeepAlive functions. Unfortunately, by the time a HTTP module Dispose method is driven, the application is almost completely shutdown.  It works, but it is rather inefficient.

I would offer an alternative technique based on the ASP.NET 2.0 Health Monitoring heartbeat web event. Within Health Monitoring web.config settings, one can set the heartbeat web event at a frequency as desired by the application.

CLICK HERE to download a FREE sample Health Monitoring web event provider (HeartbeatKeepAlive), which intercepts the heartbeat web event and activates KeepAlive functions to keep one or more applications alive. I prefer the heartbeat web event technique because it consistently keeps web applications alive before an application shutdown is already underway. This technique also works well with any ASP.NET 2.0 compliant application; DotNetNuke application or non-DNN applications.

HeartbeatKeepAlive sample code is in the form of a VS.NET 2005 C# project, with a download size of 8mb. You will be prompted to login, at which point click on Register to create a user account, and you will be emailed the FREE sampleproject.  This FREE download is available for 30 days.

Philip

 
New Post
5/23/2007 5:57 PM
 

Hi Plippard,

I took some time to give a look at your site and the solution you propose, and my feeling is that:

  • your post in here is a little rude: 
    • First you just posted your own anouncement in that very forum, so I find it some kind of intrusive and offensive that you simply copy paste it into mine. I did post my solution into several threads of people seeking for keepalive technique, which I think is fair, yet I did not post into your previous anouncements threads to pretend that your commecial utility is obsolete.
    • You suggest that the solution I propose is the common and inefficient one; well I don't say that I own that technique (i read it in Rick Strahl's blog) , but to my knowledge it has not been discussed much so far. I'd rather think that pinging the site at a regular time interval IS the common solution, such as in the utility that you sell, or in the code snipet that you provide here. As for the inefficiency, I come to that later.
    • Then in my opinion, the code you advertise is more of an asp.net proof of concept than some real dedicated dnn stuff. As for mine, I had first mentioned the concept in another thread, but I did take some time to build a proper (yet very light) DNN module before I posted an anouncement in here.
  • I don't find your solution more elegant nor efficient:
    You set the application to fire HeartBeatEvents at a regular time interval, and the you provide an overriden SQLWebEventProvider to handle the beat events and perform the pinging logic. 
    • Appart from the fact that the app does the pinging itself, there is not much difference in behaviour with the regular pingers. You could as well have implemented the logic in a scheduler client task (set in timer mode). I also think that having to plug an SQLWebEventProvider is quite heavy. You could probably implement your own webeventprovider if the only purpose is to peform the keep alive. BTW, you need to be careful to ping the KeepAlive page rather that the root, cause otherwise this will pollute the site logs.
    • Your code requires manual file configuration.
    • Unlike with external based pingers, the solution you propose should stop working for any application recycling not caused by a inactivity (web.config modification, module installation, IIS alternative recycling conditions). I would think that HeartBeatEvents purpose is to monitor the site's health externally, and potentially send a ping it if the events stop firing rather that when the events do fire.
    • There is still the overhead of regular pings, and no immediate restarting on app recycle. The purpose of my module is specifically to keep the site alive by a single ping at recycle time, thus with practically no offline time at nearly zero cost.
    • App recycle on idle time does not have to be a bad thing by itself. My module does not emulate activity to prevent the application to recycle, it simply restarts the application perpetually. thus it frees unused memory on idle time, while keeping the app awake, which may be expected behaviour. 
    • It does not have to be though, and I think it may be compatible with other monitoring solutions such as your web utility (I do also use a free web ping windows service, and I see no problem with them). Having said that, and considered the fact that no solution inside the app will probably ever be able to monitor and signal major failures, I would rather combine a regular external monitoring system that sends me emails with an inner module that does not ping all the time nor stops on recycling.

Ok loads said already. well I might have sounded a little arch and ticky myself now. I have to admit I felt annoyed.  Now I don't mean to pretend there is nothing good in your idea. I'm pretty sure you can achieve something good with a custom webeventprovider doing some smart stuff.


Jesse
CTO - Aricie
 
New Post
5/23/2007 7:54 PM
 

Jessynoo,

Sorry you were somewhat offended.

The purpose of my post was to encourage an exchange of ideas....based on technical merits.

I will address some of your points...

1.       I do think the Dispose method approach is somewhat inefficient.... regardless of whether it first appeared in the Rick Strahl blog.  Given a ASP.NET 1.1 architecture I would agree with you...however given the benefits from an ASP.NET 2.0 Health Monitoring architecture....I would have to prefer the Health Monitoring heartbeat web event approach.

2.       You are right in that both solutions ping in a similar manner... however the key to each solution is the means in which they are triggered.....Dispose method versus Heartbeat Web Event.  I see the Dispose method being somewhat equivalent to being thrown out of an airplane at 10,000 feet and then pulling the rip cord at 1,000 feet.   Yes....it works....but would you do it again ?

3.       As is pointed out in the Heartbeat Readme file, deriving my MySqlWebEventProvider class from SqlWebEventProvider is simply for demonstration purposes, however in my production environment I prefer this because I log all ASP.NET 2.0 Health Monitoring web events to SQL.  I replaced my old proprietary event logging component with ASP.NET 2.0 Health Monitoring.  No need to reinvent this wheel.  As I point out in the ReadMe, one can just as easily derive from one of the other Health Monitoring web event providers (event log, WMI, SMTP email, custom, etc).

4.       Manual configuration ? - Yes.... however the real benefit here is that BOTH DotNetNuke and native non-DNN applications benefit from ASP.NET 2.0 Health Monitoring.   DotNetNuke is several years old now.... and in my opinion DNN was primarily useful with an ASP.NET 1.1 architecture.  There is a ton of code with a bloated architecture in DotNetNuke.  With many of the ASP.NET 2.0 features one does have to carefully examine which feature set is best going forward.

I think that addresses your major points.

I do appreciate your comments.

Philip

 
Previous
 
Next
HomeHomeOur CommunityOur CommunityCommunity Membe...Community Membe...KeepAlive module without external componentKeepAlive module without external component


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out