After upgrading to Sitecore 9 our client experienced a large decrease in performance when publishing large amouts of items. Fx. the whole site, which is a common thing to do for them.
My unual publising strategy is selecting an item and publish all children below that. Works very well on whole websites.
But the client used a different strategy. By selecting all children and related items (They wanted to be sure that the media items used on the site were published as well).
The worked ok for smaller amounts of items, but around 70.000 - 80.000 items the performance decreased drastically (The poores measured at 2 items/30 seconds)
I created a support ticket to hear if there is something to do about the performance.
The fix was very simple. Just add the hidden setting DeepScan with a value false to the appropriate config file you your life will be happy again.
<processor type="Sitecore.Publishing.Pipelines.GetItemReferences.AddItemLinkReferences, Sitecore.Kernel"> <DeepScan>false</DeepScan> </processor>
Thanks goes to Alexey Tupkalo and all his collgues at Sitecore Helpdesk. You guys do a fantastisk job :)