In OSS Puppet Server we ship with config files that set the max heap size to 2G, no matter what.
Today, with the default number of JRuby instances set to num-cpus + 2, that doesn't make much sense. If the user installs Puppet Server on a machine that has a large number of cores, we're virtually guaranteed to get an OOM.
SERVER-364, we are considering lowering the default number of JRuby instances to a max of 4 or 6, but less for machines with a low number of CPU cores. If we do that, 2G may be a reasonable max heap size for machines that end up with the default of 6 jrubies, but for the smaller machines, it'd be nice if we could default to a lower value.
To achieve this we'd need to be able to detect the number of cores and/or total system RAM during installation, and modify the defaults/sysconfig file to set an appropriate value during installation. If we can figure out a sane way to do that, we still need to decide on a formula for calculating the value based on the number of JRubies. We'll probably need to do some perf testing against
SERVER-325 as input to this, because it's possible that that ticket will significantly reduce the RAM requirements overall.