Sadly, Steven, I ran into this same exact problem in Puppet. Your solution won't be found in changing to a different server setup (webrick to Passenger, for instance). I've tested both with a large number of files and they both fall on their face. Puppet simply is not capable of serving large trees of files the way it is designed. The only solution I have found is to make native OS packages to distribute and install (instead of simply transferring the tree of files).
Coming from a CFengine backround (and perhaps going right back to it, the verdict is still out), this was a major disappointment to find while evaluating Puppet. It takes CFengine 2.1.x only 1-2 minutes to transfer 14,000 files totalling 147MB. Puppet took many hours and memory growth was enormous. -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/ov8kSP2h0XQJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.