Back to all posts

DotNetNuke Scheduler Explained

Posted on Feb 13, 2008

Posted in category:
Development
DNN

I have found that many people that work with DotNetNuke sites are often unfamiliar with the various scheduled tasks that are implemented within DotNetNuke.  Is this a bad thing?  It depends, by default the configuration of scheduled tasks will work just fine, but as your site grows there are specific tasks that can become problematic due to the size of the site, resulting in increased resources being used or worse site failure/errors.  This article will discuss each of the default tasks that are included in DotNetNuke, I will describe the function of each and discuss the default schedule and when you should change the schedule.

DotNetNuke.Entities.Users.PurgeUsersOnline

This task is one that is used by the Users Online module within DotNetNuke.  When this task executes it will remove users from the listing of online users that are no longer active in your site.  When using this module the time-frequency for this module is something that you want to take into careful consideration, more details will be discussed in the "When to change" section

Standard Schedule

By default this task is NOT ENABLED by DotNetNuke, if you enable users online it will execute every 1 minute to purge the users

When to Change

Typically the default values for this functionality is ok if you are using the module, if you run an incredibly high activity site though you might consider adjusting this to run every 5 minutes or so, just to reduce the minimum load that it does add to your site

DotNetNuke.Services.Log.SiteLog.PurgeSiteLog

This task, if it is enabled, will purge the records in the site log that are older than the specified history time.  This task is highly important as when using the site log this will prevent the log table from growing too large

Standard Schedule

By default, this task is NOT ENABLED by DotNetNuke if you enable this task the default run frequency is once per day.

When to Change

This task is one that by the nature of how it works is best to leave at a 1 per day schedule as it only cleans records based on a daily basis

DotNetNuke.Services.Scheduling.PurgeScheduleHistory

This task is used to purge records from the Schedule History table.  This is an important task because if your schedule history is left alone it is very possible for your database size to grow in a very rapid manner due to the sheer number of items that are completed by the scheduler.

Standard Schedule

By default, this task is ENABLED by DotNetNuke and will execute once per day.

When to Change

This is another task that due to the nature of the action it performs changes to the schedule are not needed

DotNetNuke.Services.Log.EventLog.PurgeLogBuffer

This task is used to purge records from the Event Log queue to the database.  This is an important feature of DotNetNuke as this task is what ensures that all actions are successfully recorded to the EventLog table.

Standard Schedule

By default, this task is ENABLED by DotNetNuke and will execute once per minute

When to Change

You can modify this task to run less frequently on a highly active site and it might have minimal performance modifications.  For example, if it runs every minute and takes 5 seconds, you could schedule it to run every 5 minutes and it would take 25 seconds.  However, in my experience with DotNetNuke, it is not ever necessary to modify this task.

DotNetNuke.Services.Log.EventLog.SendLogNotifications

This task is responsible for sending e-mail notifications to the administrator from the event log system. 

Standard Schedule

By default this task is NOT ENABLED by DotNetNuke, if enabled it will execute once every 5 minutes by default. 

When to Change

Due to the nature of urgent updates to the administrator, if this task is enabled I would not recommend changing the interval.

DotNetNuke.Services.Search.SearchEngineScheduler

This task is responsible for the population of the search engine within DotNetNuke.  When this task is executed all modules that support ISearchable will be polled for index information and if any exists it will be added to the search index.

Standard Schedule

By default, this task is ENABLED by DotNetNuke and will execute once every 30 minutes

When to Change

This task is typically the one that causes the most problems.  Due to the nature of the search engine and how it queries modules for information, it can take an INCREDIBLY long time for this code to run on large DNN sites (I have noticed times of over 15 hours for some clients).  Therefore if you have a large site you might want to change this for two reasons.

The first being the additional errors that will be thrown if the process runs for more than 30 minutes.  If the scheduler is still executing the indexing process when it tries to start again a "cannot insert duplicate key" error will be encountered.  This adds to the number of entries in your event log and is an overall bad practice.

The second being the server resources that are being used.  The search indexing process is very database intensive and depending on your setup could cause noticeable performance reductions to your visiting clients.  If you can get away with it I would highly recommend having this run no more than once per 6-8 hours.  If you have a more active site you can leave it as is, however, keep an eye on your event log for errors.

DotNetNuke.Modules.Admin.ResourceInstaller.InstallResources

This task is responsible for the automatic installation of modules that have been placed in the various /Install folders in your DotNetNuke installation.

Standard Schedule

By default this task is NOT ENABLED by DotNetNuke, if enabled it will execute once every 30 minutes by default.

When to Change

You can enable this task if you want to automatically install modules, however, I personally recommend NOT using this feature

DotNetNuke.Services.FileSystem.SynchronizeFileSystem

This task is responsible for updating the File Manager by synchronizing the DNN file system with your physical file system.  This is needed if you add many files to your site via FTP and not using one of the "DNN ways" of uploading

Standard Schedule

By default this task is NOT ENABLED by DotNetNuke, if enabled it will execute once every hour by default.

When to Change

If you use FTP to upload files to your /Portals/<portalId> folder you might enable this option, however, I personally recommend just using the "Recursive" sync option within file manager whenever I have an issue.  My reasons for this are that if you have a large number of files, this task can take a very long time to execute.

DotNetNuke.Services.Cache.PurgeCache

This scheduled task is responsible for purging cache files from the hard drive when using the "Disk" method of caching.  If you are using the "Disk" caching method this is a key scheduled task.

Standard Schedule

By default, this task is ENABLED by DotNetNuke and will execute once per 2 hours.

When to Change

You can disable this task if you are working with "Memory" caching (which I highly recommend).

Disclaimer/Conclusion

This guide has been provided as a quick reference to explain some of the "default" scheduled tasks that are available to you in DotNetNuke.  It is your responsibility to determine which tasks if any need to be modified from the default configuration.  Without a detailed look at the entire DNN solution, it is impossible to provide a blanket set of "rules" for setting scheduled tasks.  If you have any specific questions about this article please ask them below, if you need technical assistance please visit my forum for assistance.