Is this really the version you are looking for? Kentico Xperience 12 Service Pack Documentation is no longer updated. Use the switcher in the header to choose your product version.
Running the Kentico EMS on-line marketing functionality typically increases the performance requirements for websites with very heavy traffic. This page provides best practices for optimizing the performance of such websites and helps to determine the hosting requirements for EMS projects.
Kentico EMS has been tested with the following on-line marketing parameters:
Total number of stored contacts: 100 million (108)
Total number of logged activities: 1 billion (109)
Used on-line marketing features:
Two different hosting configurations were tested with the following traffic loads:
Hosting configuration | Page requests per second | Concurrent visitors |
|---|---|---|
Load balanced web farm with 4 servers (Kentico instances)
| 1600 (800 from new contacts) | 25000 |
1 web server | 600 (300 from new contacts) | 9000 |
With the above traffic loads, the page load time was under 1 second for at least 95% of all live site web requests.
The following server specifications were used:
Web server |
|
Database server |
|
Important
Higher parameters may be achievable with more powerful hosting configurations. In general, the following scaling recommendations apply:
To achieve optimal performance with Kentico EMS websites, follow the recommendations in the sections below.
Note: In addition to the instructions listed on this page, also follow the general performance best practices for all types of websites: Optimizing performance of Portal Engine sites
You may need to host your website in a web farm with multiple servers to handle high traffic loads. To learn how to set up the web farm synchronization features in Kentico, see Configuring web farm servers.
When using a static web farm, you can optimize on-line marketing performance by having one designated server perform all recalculation of on-line marketing data (contact scores, contact groups, personas, marketing automation triggers).
To configure recalculation on only one designated web farm server, you need to disable the recalculation on all other servers. Set the CMSCreateContactActionsLogWorker web.config key to false in the appSettings section of the web.config file on all servers except for the selected recalculation server:
<add key="CMSCreateContactActionsLogWorker" value="false" />Keep in mind that you must always leave recalculation enabled on one server.
Note: Using one server for recalculation improves the web farm's overall performance, but you may experience longer delays between actions on the website and results in the administration interface (calculation of contacts scores, assignment of contacts to contact groups or personas, etc.).
Running the on-line marketing features on a high-traffic website places a significant load on the database server. To distribute the load of Kentico's standard and on-line marketing functionality, separate your on-line marketing database to a second database server.
If you have the option to administer the website's database server, we recommend that you perform the following steps:
Optimize the database's Log and Data files (opens in a new tab):
Enable the Lock Pages in Memory Option (opens in a new tab) on the database server
By default, the Kentico database tables have indexes optimized for the most common scenarios. However, each EMS website uses a different set of on-line marketing features, with different visitor behavior, and a unique distribution of data.
For optimal performance, we recommend that you regularly use a tool (for example the Database Engine Tuning Advisor (opens in a new tab)) to analyze your database performance. Consider the suggestions and implement any database index adjustments that are suitable for your specific project.
Additionally, the default database indexes are optimized for live site performance, not for operations in the Kentico administration interface. With extremely large volumes of data (millions of records), you may encounter slow performance or timeouts in object lists – for example if you change the default list ordering or when filtering according to certain fields. You can address these problems by creating custom database indexes with the corresponding columns (note that this may have a negative impact on live site performance).
Optimizing Salesforce integration
The default Kentico indexes are optimized without considering the Salesforce integration. If you are using the Salesforce integration with a large number of contacts, we recommend that you optimize database operations by manually creating a database index with the following columns on the OM_Contact table:
The index should be non-clustered and non-unique. See the Create Nonclustered Indexes (opens in a new tab) article for more information.
For optimal performance and data accuracy, make sure that JavaScript logging is enabled for web analytics and activities:
For more information, see Enabling web analytics.
Composing marketing emails for a large number of recipients can decrease the system's performance, particularly if the emails contain macros and use other email marketing features. Approximately 5% of the email generation time is spent on Tracking clicked links, Tracking opened emails, and Logging on-line marketing activities, when these features are enabled. The time spent on resolving macros grows linearly with the number of macros used in the emails, however this takes up only a small portion of the total email generation time. Note that the growth of the macro resolving time is linear only if all data is cached and no database operations are performed within the macros.
As a result, we recommend minimizing the number of macros in the content of your marketing emails to ensure a shorter email generation time.
EMS email generation performance tests
These recommendations were put together based on the results of several tests performed on Kentico EMS.
The marketing email send out was tested for performance in an environment with no real traffic, measuring only the generation of emails. The testing environment consisted of a web server and database server, without a separated on-line marketing database. The tested emails contained up to 50 data macros and up to 5 macros using recipient properties.
In addition to the information stated above, the results also show that the email generation time grows linearly with the number of email recipients.
Inlining of the CSS markup included in marketing email templates can have a negative influence on the performance of your system when composing emails. We recommend disabling CSS inlining to reduce the email generation time.
When generating a large amount of emails, we recommend configuring the system to use the email queue and setting the Network delivery method for your SMTP server. When using the Network delivery method with the email queue enabled, the system temporarily stores all outgoing emails in the database instead of sending them directly to the SMTP server.
The contact management features create contacts and log activities for every visitor, which generates a very large amount of data on high‑traffic websites. Extremely large numbers of stored contacts and activities may slow down certain operations in the system and be overwhelming for your marketers.
To reduce the volume of data, we recommend that you configure the system to regularly delete contacts that meet certain conditions and are no longer relevant.
To reduce system overhead on EMS instances with a very large number of contacts, we recommend that you disable event logging for the following actions:
Add the following keys to the appSettings section of the web.config file:
<add key="CMSLogMATransitions" value="false" />
<add key="CMSLogNewsletterIssueEvents" value="false" />Recalculation of contact scores and contact groups can be a resource intensive process that may reduce website performance.