Monday, July 25, 2005

MCMS Performance - Best Practices

Hardware

To avoid competition for resources among applications, it is important that you keep MCMS on dedicated servers. Instances of SQL Server should be installed on their own computers as well. This will avoid the applications and services competing for CPU and memory.

  1. Memory
    • Sufficient memory to store the working set of pages in output or fragment cache.
    • Speed up the page assembly - ensure that there is sufficient memory available for the node cache.
  2. Processor capacity
    • Ensure that enough CPU capacity available to efficiently assemble pages using data from node cache, disk cache, and the MSQL database.
  3. Network
    • Ensure that the Web server is placed on the same switch as the database servers to minimize network latency.
Caching
  1. ASP.NET Output Cache
    • Output caching increases performance so dramatically, all MCMS sites using ASP.NET should make use of this cache where appropriate. This is managed by .NET framework.
  2. Fragment Cache
    • This is similar to Output cache, but managed by MCMS. Fragment caching is used only with "guest" content. Fragment caching user-specific content requires a great deal of care to ensure that sensitive information is not accidentally revealed.
    • This only exists for ASP based templates
  3. MCMS Node Cache
    • Node cache plays a central role in page assembly - increasing the amount of memory available to it is an important part of improving MCMS performance.
    • To set the node cache depending on your site check set the node cache size based on site size.
  4. Disk Cache
    • You should increase the size of the disk cache so that it can contain most, if not all, of your MCMS managed resources.

To know more about Caching read Enhancing Performance with Caching.

Navigation
  • Render only what is necessary.
  • Make the site-level navigation as generic as possible.
  • Use output caching when ever possible.
Authentication
  • The sites require authentication perform 15% (for basic templates it's around 30%) slower than those require no authentication - remove the authorization module if no authentication is required - this will increase the performance of the site be 10%.
Resource Management

Make resources as minimum as possible to increase the performance of the site. Resources such as images, sound clips, and video clips can have a large impact on your Web site's performance. As a general rule, you should avoid using large resources. Compress resources whenever possible. For example, for pictures, use .jpg images instead of .bmp images. Also, unmanaged resources are not part of MCMS, you can achieve performance improvements by using them.

Content Updates
  • The affected nodes will be invalidated.
  • If you are using the AddValidationCallbackAllCmsContent method then it will flush the output caching.

So it's better to make batch content updates as much as possible.

Background Processing

Database performance will decline during background processing. Therefore, as a general rule you should schedule background processing for non-peak times to reduce the chance that it will affect your site performance.

Managing IISOn a read-only site, remove HTML packager ISAPI filter.
SQL ServerFor optimal performance, the databases should be separated from their transaction logs on different physical drives to prevent resource conflicts. For more information about SQL Server performance tuning, go to Optimizing Database Performance.
Design time Performance
  • MCMS can handle a reasonably large number of authors (25 to 100), each updating a small number of postings (around 10) per day. However, the performance of MCMS will suffer under a high load of concurrent update operations where the interval between updates is small.
  • MCMS performance will suffer when a live source is coupled with authored content updates.
Placeholders
  • Limit the number of placeholders on a template to fewer than 100. For best performance, consider limiting the number of placeholders to 30.
  • Limit the line of content to less than 1000. It is better to have less than 100 to have high performance.
Container Hierarchy
  • Limit the number of containers under the root node. (For example, channels should not have more than 10 to 15 immediate child containers). This won't affect the MCMS performance significantly. But, it will affect the performance of non-MCMS content on the same server.

  • Limit the items in a container to fewer than 300. You can do this by distributing items over multiple containers, to ensure that the number of items in each container does not exceed 300.

Custom Property Searches

Design such that, the total number of posting searched using custom property is less than 5000. It is better to have lesser that 500.

Site PartitioningVery large MCMS sites that contain many postings (which has more than 20,000 postings) should consider whether it is possible to partition the site into a series of smaller sites to get optimum performance.

This is a summary from Performance Planning and Deployment with Content Management Server 2002.

Also Stefan has posted two less known performance issues caused by in-proper use of publishing API in his article.

Tuesday, July 19, 2005

MCMS Manager 3.1

All the tools are separated from MCMS Manager. This version includes -

1. Tools Add in Manager.
2. Reports exporter.
3. MCMS Health Checker.

Also, when minimized - it will stay in System tray - no need to close and open. Download MCMS Manager (and other tools) from here.

Friday, July 15, 2005

Rights Check via Publishing API

CmsContext

  • The rights check given below on CmsContext are side-wide checks.
  • This doesn't depend on PublishingMode.

PropertyUser roles - who have rights on site
UserCanApproveAdministrator, Channel Manager, Template Designer, Moderator, or Editor
UserCanAuthorAdministrator, Channel Manager, Template Designer, Moderator, Editor, or Author
UserCanEditResourcesAdministrator, Channel Manager, Template Designer, or Resource Manager
UserCanEditTemplatesAdministrator, Channel Manager, Template Designer
UserCanModifySiteAdministrator, Channel Manager, Template Designer, Resource Manager, Moderator, Editor, or Author


Channel

  • The checks given below are done on the appropriate channels.
  • Channels can be only modified in Update mode.

PropertyAdditional ChecksUser roles - who have rights on channel
CanCreateChannels-Administrator, Channel Manager, or Template Designer
CanCreatePostings-Administrator, Channel Manager, Template Designer, Moderator, Editor, or Author
CanDelete
  1. Channel must be empty
  2. The root channel cannot be deleted by anyone
Administrator, Channel Manager, or Template Designer
CanSetProperties-Administrator, Channel Manager, or Template Designer


Posting

  • The checks given below are done on those postings.
  • Postings can be only modified in Update mode.

PropertyRights on ChannelPostingStateUser roles - who have rights on posting
CanMove-Approved, EditorDeclined, Expired, ModeratorDeclined, New, None, Published, Saved, WaitingForEditorApproval, WaitingForModeratorApprovalAdministrator, Channel Manager, Template Designer, Moderator, Editor or Author if it is not OwnedBy another user
CanSubmit-New , Saved , Editor Declined , or Moderator DeclinedAdministrator, Channel Manager, Template Designer, Editor or Author if it is not OwnedBy another user
CanDelete-Approved, EditorDeclined, Expired, ModeratorDeclined, New, None, Published, Saved, WaitingForEditorApproval, WaitingForModeratorApprovalAdministrator, Channel manager, Template Designer, Moderator, Editor, or Author if it is not OwnedBy another user
CanSetProperties-Approved, EditorDeclined, Expired, ModeratorDeclined, New, None, Published, Saved, WaitingForEditorApproval, WaitingForModeratorApprovalAdministrator, Channel Manager, Template Designer, Moderator, Editor, or Author if it is not OwnedBy another user
CanApproveOnly Editor RightsNew, Saved, EditorDeclined or WaitingForEditorApprovalAdministrator, Channel Manager, Template Designer, Editor
CanApproveEditor and Moderator RightsModeratorDeclined or WaitingForModeratorApprovalAdministrator, Channel Manager, Template Designer, or Moderator
CanApproveOnly Moderator RightsNew, SavedAdministrator, Channel Manager, Template Designer, or Moderator
CanApproveNo Moderator or Editor RightsNew, Saved, EditorDeclined, WaitingForEditorApproval, WaitingForModeratorApproval or ModeratorDeclinedAdministrator, Channel Manager, Template Designer


TemplateGallery

  • The checks given below are done on the appropriate template galleries.
  • Template Galleries can be only modified in Update mode.

PropertyAdditional ChecksUser roles - who have rights on templategallery
CanCreateTemplateGalleries-Administrator, Channel Manager, or Template Designer
CanCreateTemplates-Administrator, Channel Manager, or Template Designer
CanDelete
  1. TemplateGallery must be empty
  2. The root TemplateGallery cannot be deleted by anyone
Administrator, Channel Manager, or Template Designer
CanMove-Administrator, Channel Manager, or Template Designer
CanSetProperties-Administrator, Channel Manager, or Template Designer


Template

  • The checks given below are done on those templates.
  • Templates can be only modified in Update mode.
PropertyTemplateStateUser roles - who have rights on template
CanMove-Administrator, Channel Manager, or Template Designer if it is not OwnedBy another user
CanSubmitNew, NewShared, Saved or SavedSharedAdministrator, Channel Manager, or Template Designer if it is not OwnedBy another user
CanDelete-Administrator, Channel Manager, or Template Designer if it is not OwnedBy another user
CanUseForAuthoring-Administrator, Channel Manager, Template Designer, Moderator, Editor, or Author
CanSetProperties-Administrator, Channel Manager, or Template Designer if it is not OwnedBy another user


ResourceGallery

  • The checks given below are done on the appropriate resource galleries.
  • Resource Galleries can be only modified in Update mode.

PropertyAdditional ChecksUser roles - who have rights on resourcegallery
CanCreateResources-Administrator, Channel Manager, Template Designer, or Resource Manager
CanDelete
  1. ResourceGallery must be empty
  2. The root ResourceGallery cannot be deleted by anyone
Administrator, Channel Manager, or Template Designer
CanSetProperties-Administrator, Channel Manager, or Template Designer


Resource

  • The checks given below are done on those resources.
  • Resources can be only modified in Update mode.

PropertyUser roles - who have rights on resource
CanSetContentAdministrator, Channel Manager, Template Designer, or Resource Manager
CanDeleteAdministrator, Channel Manager, Template Designer, or Resource Manager
CanUseForAuthoringAdministrator, Channel Manager, Template Designer, Moderator, Editor, or Author
CanSetPropertiesAdministrator, Channel Manager, Template Designer, or Resource Manager


Monday, July 11, 2005

Connected Posting State Change by Approval and Submission

Connected postings are related with underlying 'Posting' objects and 'Page' objects. As I've stated in my previous post all the connected posting will have the same page objects. FollowGuids will be used to refer page objects with postings (to understand more check Posting - Posting - Channel Relationship).

When creating a new connected posting, a new posting will be created with same page objects - which other connected postings are using. All the connected postings, they will have their own posting objects, but will use the same page object. So any modification to page object will move all the connected postings to the appropriate state where if a posting object is modified, it will move only that connected posting to the appropriate state (to know what are bounded with page object and posting object check Posting State Change by Approval).

The state changes of postings can be found in my previous posts,

1. Posting State Change by Approval
2. Posting State Change by Submission

and it will be same for connected postings as well. The only difference is that when a modification - state change is done to one connected posting, if it is a modification on page object - that will get reflected in all the connected postings as it has only one copy of page object whereas if the modification is on posting object then it will only affect that connected posting as all the connected posting has their own posting objects.

PS: Don't get confused with Posting , Posting object and Page object. Posting is used over the API and other two are underlying objects which will makeup the overall posting (Posting = Posting object + Page object).

Wednesday, July 06, 2005

MCMS Manager 3.0

New version includes tools to reduce the time spend on creation of script files for Export/Import.

1. Incremental Export Script Generator.
2. Incremental Import Script Generator.
3. Cms User Group Backup/Restore Script Generator.

These tools support saving the settings as xml files. So if you require modified version of the script in future, you can just load and modify (using the provided gui) the xml file and generate required script without much difficulty!

Goto MCMS Manager Site.