ondemand starts with 0 workers and ignores the start_servers and spare_servers settings.
After research and testing, I am currently using:
pm = dynamic
pm.max_children = 6
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
I do get some warnings about max_children, most likely because of crawlers etc.
Not had any complaints.
Dynamic starts faster as 1 server is ready and doesn’t have to be loaded.
One thing to watch is how much your Virtual memory gets used. Mine is now almost zero.