SPE Script Performance & Troubleshooting
TLDR
Your problem is that your SPE (Sitecore Powershell Extensions) scripts are running slowly or hanging indefinitely. You are running complex scripts on a large site with a large database. You are seeing many cache clear warnings in the log.
If you have RAM to spare on your local machine, this guide is for you. If not, I recommend searching for items via index rather than via database (if possible, depending on what your script does).
If you're short on time and feeling CRAZY, disable cache limits completely. This is not recommended except on your local machine, but it will definitely improve performance. It's also a great way to see just how big your caches get while running your script.
Intro
Sitecore cache tuning has been covered in depth by many others, but I want to share my experience with SPE scripts and how I was able to improve performance and resolve issues.
Let's say you have a huge site with a huge database and want to run this script in SPE:
The script hangs forever. Logs are filled with variations of:
WARN cache is cleared by Sitecore.Caching.Generics.Cache 1+DefaultScavengeStrategy[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] strategy. Cache running size was 45 MB.
Note that log messages about AccessResultCache
are not applicable here.
Head over to /sitecore/admin/cache.aspx
. The default UI is a bit clunky, but there may be a module out there that makes it easier to use. Keep refreshing to see which caches are full and adjust them upwards in the config below. If running script on master DB, search for master
on cache page. You will notice that as you run your script, the caches will fill up quickly. Keep a close eye on it to see which caches get cleared while your script is running (also check logs for keyword cleared
).
Increasing your cache size will noticeably increase your script performance and prevent scripts from hanging indefinitely. It will also improve Sitecore performance in general, although it can increase startup time.
Alternatively, if you're feeling CRAZY, you can disable the cache completely. This is not recommended except on your local machine, but it will definitely improve performance. It's also a great way to see just how big your caches get while running your script.
More Reading
Cheers,
-MG