Load Balancing in Marketo

Josh_Hill13
Level 10 - Champion Alumni
Level 10 - Champion Alumni

As your use of Marketo matures, so do their customers become more skilled in the use of the platforms. And that means some customers push the limits of what the system is designed to do. Whether it is running dozens of data correction flows, scoring, and lead lifecycle or accumulating workflow detritus, an older system is often a slower system. Remember the Windows entropy problem? It's similar.

To keep your leads flowing fast, there are some tricks and best practices for running a system efficiently and effectively. These tips are helpful for new system builds (do it right the first time) as well as rebuilds or cleanups. These tips are considerations and each situation may require different designs.

Why do systems like Marketo slow down?

Like any computer program, Marketo is limited by hardware as well as software. Marketo is designed to handle marketing focused activities like scores, syncs, and email sends. Marketing tech people like me have taken advantage of other functions like data normalization, personalization, and lead lifecycles to perform tasks that the system can do, but maybe wasn't expecting to be used heavily.

There are three key components that can slow down an instance:

  • Number of trigger campaigns
  • Volume of Leads
  • Complexity of smart lists

There is not a hard and fast rule for the number of campaigns or leads that Marketo can handle well. Based on my experience, slow downs can occur with as few as 150 triggers and 100,000 leads. I've seen systems with 1,400 triggers and heard of systems with 3,500! With regular cleaning and good systems design, it is fairly easy to keep your system running fast.

Increasing speed, reducing load

Trigger campaigns are always on, always listening. That means for every lead that changes, the system must check if it meets those conditions. If you import a lot of leads, or change a lot at once, the system will have to check all of those at once. According to Marketo, each lead is set serially into the flow, further slowing down the system.

Reduce the number of Triggers!

  • Convert triggers to batches.

Does every score have to happen immediately? Probably not. Behavior based triggers are prone to frequent hits and complexity, so move these to a nightly batch. Data normalization can also help. Batches also run all the flow steps for every lead at once, instead of serially, which reduces total processing time.

The real reason triggers cause problems is there are two queues. Whenever a change to a lead happens, it hits every potential Trigger in the backend - the Trigger Evaluation Queue. You cannot see this and Marketo Support won't show most of you what is going on there.

The key thing to know is the formula: Change x # of Leads.

100,000 Leads Imported x 20 Lead is Created Triggers = 2,000,000 evaluations

Yes. It gets big, fast. The fewer triggers you hit, the faster Marketo can send the lead to the correct Trigger that's visible in the Campaign Queue. Some big offenders could be your SalesOps team or Product team making batch changes on their end, only to let 1,000,000 records sync to Marketo to hit that Evaluation Queue. This Queue will slow down your processing and routing inside Marketo because it takes longer for the lead to hit the correct set of Triggers and then be processed as you expect.

  • Reduce the Qualifications Rules from Every Time to something else.
  • Reduce Triggers like Change Data Value and Lead is Created to single points of entry or batches whenever possible.
  • Reduce the number of leads that can flow through with filters
  • Leverage the auto-deactivation after 6 months.
  • Clean up triggers quarterly with the Campaign Inspector.
  • Compress flows by adding flow steps to one campaign based on the same trigger. Eg: Interesting Moments and Scoring can often be on the same flow.

Smart Lists Should be Less Complex on Triggers

Depending on the situation, you may want to reduce the complexity on batches and triggers. Instead of Marketo looking for the list and running it, just put the filters in the trigger itself. Or reduce the number of nested smart lists called in a smart list. Whenever you ask Marketo to call another Smart List, it has to wait until all of the other smart lists finish, before putting together the final counts.

The more complex a smart list, the harder it is for the system to figure it out, which increases backend processing (which you do not see on the Campaign Queue) and even creates campaign failures from timeouts.

Change the Time of Day of Batches

While this may vary with your business and location, batch data flows should occur at night, or the time of day where leads aren't on your site frequently. This helps give priority to email sends that may start around dawn or through the day, as well as triggers that route leads to sales on weekdays.

Use Wait Steps in Processing

There is a much longer discussion on this regarding Lead Lifecycles and Ed Unthank's lead processing articles. Many times, some campaigns are subject to a race condition between themselves or the CRM. To mitigate this, where the lead should have been updated, but wasn't in time for the next campaign to process properly, you can do three things:

  • Add Wait Steps at the start of the flow to let the other flows catch up. Sometimes 5 to 30 minutes are needed.
  • Add Wait Step after a Sync to CRM step to let the CRM assign a Lead Owner. May require 10 - 30 minutes if the system is complex.
  • Request Campaigns to control the order of operations.

Now remember that Wait Steps will also slow down the overall time it takes for a lead to finish processing. Sometimes this is good if you think Marketo isn't fully registering the Data Change before the next step. Other times, it may cause the overall time to take much longer.

With Project Orion on the horizon, we may all see our processing times reduce, especially with behavioral data. Just because it goes faster, doesn't mean you should abandon good workflow design.

6686
10
10 Comments
Anonymous
Not applicable

Thanks -  this explains a lot!

Anonymous
Not applicable

Thanks, really useful. do you know how you can easily get a list of live triggers to go through and tidy up?!

thanks

sarah

Grégoire_Miche2
Level 10

Hi Sarah,

Better not ask twice the same question in 2 different places

See: List of Live Trigger Campaigns

-Greg

Anonymous
Not applicable

For Smart Lists, using Segmentation and limiting slow operators (ie 'Contains'/'Was Not Sent') will also improve performance issues.

David_Gaible
Level 7

Great stuff! Marketo should really have this type of knowledge tested on the certification exam. I've had a previous role where I walked into a legacy instance and had to learn these lessons the hard way. Nice article Josh.

Josh_Hill13
Level 10 - Champion Alumni

I'm not sure this is entirely necessary for MCE. This is more of larger scale systems. If there were another level of the exam, yes, it should be there. But it's not documented officially, so it can't be on the exam.

Anonymous
Not applicable

The real reason triggers cause problems is there are two queues. Whenever a change to a lead happens, it hits every potential Trigger in the backend - the Trigger Evaluation Queue. You cannot see this and Marketo Support won't show most of you what is going on there.

*emphasis added is mine

Honestly this particular portion feels a little bit inflammatory. 

There isn't a lot of information to "show" about what is going on there.  There's no easily accessible dashboard that they can screen shot or share with the Trigger Queue information on it.  They are, however, more than willing to explain how things work if there's an issue with the queue. 

This queue system is one of the major reasons why Support continuously mentioned the best practice of not setting up vague, wide reaching trigger campaigns like "Fills out form: Any" for high traffic forms or "Visits Webpage: Any" for high traffic sites/pages.  Additionally, having a large number (100+ in the past, likely a larger number now) of even small scale triggers active can cause issues.  Combine large numbers of active trigger campaigns and complex smart list logic and you have a recipe for trouble when lead traffic/activity spikes.

Now with Project Orion coming out that is very likely to change and more data/activity can be handled, but we (outside Marketo) won't know for sure until it's actually released/tested in the wild.

Josh_Hill13
Level 10 - Champion Alumni

Yes, Orion will help with this, but that doesn't mean you should be sloppy with your triggers. It doesn't matter if you have a wide ranging trigger or a carefully configured one - all leads that hit Visits Web Page have to be evaluated against every trigger+smart list. Yes, you are correct that complex smart lists will slow this down further because Marketo has to call back the smart list and wait for that.

And no, this is not an inflammatory statement. Marketo Support at the Premier and Elite levels will definitely show you their backend data but only if you ask and have a history of problems with the eval queue. Yes, they can explain it to you, but there are real reports and data they do use to look at your Eval Q.

Digital Pi and another firm came out with a tool that can help you see into these issues a bit more.

Rachit_Puri2
Level 7

Great article!

Gautam_Chargotr
Level 2

Thank you, its a great article!