I'm trying to figure out the best way to estimate the amount of memory
usage that will be taken up by Mongrel and I'm hoping that you have
some estimates that can help me.
I'm currently estimating the following:
Memory Required = Number of running puppetmasters * size of manifests
* number of clients managed
The mongrel model doesn't seem to *ever* reclaim memory.
Suggestions on reclaiming memory welcome though I'm sure most people
will just urge me to move to Passenger.
Thanks,
Trevor
Passenger is slowly becoming the 'official' way to run puppetmaster,
and is recommended by Reductive Labs.
As far as memory, there are many dependancies like 32-bit over 64-bit,
the size, amount of files transfered through puppet, your manifests,
variables, clients used, etc. Some is also dependent upon the version
ruby itself and it's optimizations.
Out of all of these variables what I CAN say are most important:
- files and the size of files transfered though Puppet
- 32 bit over 64 bit.
0.25 will definitely help with the memory consumption with file usage.
-L
--
Larry Ludwig
Reductive Labs
You're right--use Passenger :)
When we were running Mongrel out puppetmasterd processes started out at
100MB and grew to 1G in a couple of weeks. With Passenger processes
don't stick around as long so if nothing else you dodge the memory
leaks. And we've heard that some of the memory leak problems are in
Ruby itself--not Puppet.
In 0.24, what cost the most is the file transfer, hopefully 0.25 is
waaay better in this respect.
> The mongrel model doesn't seem to *ever* reclaim memory.
My master don't grow, but they're not really under load.
One of the issue with MRI, is that if your master are constantly under
load the ruby garbage collector never really start, and thus memory is
not reclaimed.
> Suggestions on reclaiming memory welcome though I'm sure most people
> will just urge me to move to Passenger.
Make sure you're using a recent ruby. It is known that some older ruby
version are leaking memory.
I can't comment on Passenger since I never tried it. But in the near
future (understand when I'll have some spare cycle) you'll have another
promising alternative: Puppet on JRuby on Glassfish.
I was able to run this stack in the lab, and limited testing show that
it was at least 30% faster than using mongrel. For the memory part, I
didn't check, but the JVM has a superior garbage collector than the ruby
one. I really expect some memory gains, just because you'll be running
only one process...
--
Brice Figureau
My Blog: http://www.masterzen.fr/
Interesting, thanks for the information.
My only concern with a 32 bit architecture, is that my memory usage may
legitimately grow above 2G which would toast the puppetmaster process
pretty quickly.
Thanks,
Trevor
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkqEtk8ACgkQyjMdFR1108BxlQCaA10cbRfhT8TpSRaI2jOlDb6r
TkIAn0Cv09xARvbAyLZBrFbs+rx2/3Tr
=JftR
-----END PGP SIGNATURE-----
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Interesting, thanks for the information.
>
> My only concern with a 32 bit architecture, is that my memory usage
> may
> legitimately grow above 2G which would toast the puppetmaster process
> pretty quickly.
>
The rub is Ruby itself is not optimized for 64 bit. an int for
example is double in size.