[chef] Re: What kind of load can Chef Server support?


Chronological Thread 
  • From: Brian Akins < >
  • To:
  • Subject: [chef] Re: What kind of load can Chef Server support?
  • Date: Sat, 28 Jan 2012 09:09:57 -0500


On Jan 27, 2012, at 9:27 PM, 
< >
 
< >
 wrote:

> Anyone had any experiences with loading chef server with a large number of
> nodes?

It depends on what the recipes are doing.  We can have several dozen nodes of 
one type hitting chef-server at the same time and everything is fine. 
However, other types, we can kill the server with just a few nodes.  If you 
have a large number of nodes, full node searches -- search(:node, "*:*") -- 
is a good way to kill chef-server.  When we were running chef-server under 
unicorn, it took x nodes running that search to kill chef-serevr where x was 
the number of unicorn processes.  No other nodes could run chef.  Our problem 
was that we regularly triggered chef to run on those nodes at the same time. 
We tried larger splay, etc.  We switched to rainbows and when this situation 
happens, other nodes can still run chef, just very slowly.  Ultimately, we 
figured out a way to remove the full node search from those recipes.  Yes, I 
know trimming ohai data would have helped, but we want/need that data and it 
would have just delayed the eventual problem, I think.

We still have issues with chef-server getting slow.   It generally is caused 
by certain things happening in recipes (or via knife).  We run chef-server, 
solr, and couch on a fairly "wimpy" box - 4 cores, 8GB RAM.  This was our 
"proof-of-concept" hardware that just got rolled into production.  It's been 
on our list for weeks to migrate to a larger box. Cobbler's children and all 
that.

FWIW, with rainbows it seems each individual chef run is slightly slower (17 
seconds vs 15seconds, for example) but we can run several more concurrently 
before noticing any slowdown.We bumped up unicorn process count, but memory 
usage became an issue. We front chef-server with nginx.  

Looking at the chef-server api, it seems it would be fairly easy to write a 
version in Lua embedded in nginx.  But I guess that's not as cool as erlang ;)

--Brian


Archive powered by MHonArc 2.6.16.

§