unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
From: Konstantin Gredeskoul <kig@wanelo.com>
To: unicorn list <mongrel-unicorn@rubyforge.org>
Subject: Re: Unused Unicorn processes
Date: Mon, 20 Aug 2012 17:44:44 -0700	[thread overview]
Message-ID: <CAD2+hjctLVtn_+PQALbXMGz_reSSdTue5LW+g3Vy53=CmksYDg@mail.gmail.com> (raw)
In-Reply-To: <mailman.0.1345509654.31187.mongrel-unicorn@rubyforge.org>

Greetings!

I have a question on optimal # of unicorn worker processes.

We are running Unicorn 4.3.1 + Rails 3.2.6 (without threading), on
ruby 1.9.3-p194, hosted on SmartOS/Joyent.

At the moment, unicorns are configured to start 30 worker processes. I
know this is a lot, and I am going to reduce this number. But in
trying to figure out what is a more appropriate number of workers to
run, I noticed something interesting that I couldn't explain.

If I look at the process table on each machine (see top output below),
I notice that some unicorn processes are heavily used (and have
accumulated longer CPU times, as well as have grown their RAM usage
since boot time), but other processes (at the bottom of the top
output) appear to potentially not having been used at all.  There are
several processes with RSS size of 143Mb, which I believe is unicorn
size before it processes any requests.

What I am gathering from this, is that only 16 unicorn processes are
actually processing requests, while the rest are just sitting there
idle.

Is this expected behavior?

This Joyent SmartMachine can burst up to 8 cores. Given that our web
requests spend only 80% of their time in ruby, I figured we could run
10 unicorn processes for maximum efficiency.  However seeing that 16
are actually used I am curious whether 16 is actually a better number.

Any suggestions appreciated!

load averages:  2.07,  1.97,  2.09;                    up 14+01:56:
58 processes: 53 sleeping, 5 on cpu
CPU states: 77.1% idle, 18.2% user,  4.7% kernel,  0.0% iowait,  0.
Memory: 8192M phys mem, 3157M free mem, 16G total swap, 11G free sw

   PID USERNAME LWP PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND
 24800 wanelo    18  59    0  337M  313M sleep   17:21  2.05% ruby
 24788 wanelo    18  59    0  223M  200M cpu/14  16:34  3.18% ruby
 24787 wanelo    18  59    0  221M  197M sleep   14:55  1.89% ruby
 24776 wanelo    18  59    0  217M  193M cpu/2   18:17  3.45% ruby
 24804 wanelo    18  59    0  216M  192M cpu/8    7:54  0.33% ruby
 24785 wanelo    18  59    0  211M  187M sleep   14:33  0.75% ruby
 24783 wanelo    10  59    0  209M  185M sleep   16:09  2.16% ruby
 24775 wanelo    18  59    0  205M  181M sleep    5:24  0.03% ruby
 24777 wanelo    10  59    0  205M  181M cpu/11   3:53  1.54% ruby
 24799 wanelo    18  59    0  204M  179M sleep    0:42  0.00% ruby
 24803 wanelo    18  59    0  202M  177M sleep    2:28  0.35% ruby
 24802 wanelo     3  59    0  195M  168M sleep    1:45  0.01% ruby
 24778 wanelo     3  59    0  192M  165M sleep    1:06  0.01% ruby
 24801 wanelo     3  59    0  189M  162M sleep    0:50  0.01% ruby
 24798 wanelo     3  59    0  188M  161M sleep    0:30  0.00% ruby
 24797 wanelo     3  59    0  187M  159M sleep    0:19  0.00% ruby
--- unicorns below this line do not appear to be used
 24795 wanelo     3  59    0  173M  142M sleep    0:08  0.00% ruby
 24792 wanelo     3  59    0  172M  142M sleep    0:07  0.00% ruby
 24779 wanelo     3  59    0  172M  143M sleep    0:05  0.00% ruby
 24796 wanelo     3  59    0  172M  142M sleep    0:12  0.00% ruby
 24790 wanelo     3  59    0  172M  142M sleep    0:06  0.00% ruby
 24793 wanelo     3  59    0  172M  142M sleep    0:06  0.00% ruby
 24781 wanelo     3  59    0  172M  142M sleep    0:05  0.00% ruby
 24791 wanelo     3  59    0  172M  142M sleep    0:04  0.00% ruby
 24794 wanelo     3  58    0  172M  142M sleep    0:10  0.00% ruby
 24784 wanelo     3  59    0  172M  142M sleep    0:04  0.00% ruby
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying

       reply	other threads:[~2012-08-21  0:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.0.1345509654.31187.mongrel-unicorn@rubyforge.org>
2012-08-21  0:44 ` Konstantin Gredeskoul [this message]
2012-08-21  9:11   ` Unused Unicorn processes Eric Wong
2012-08-22 18:16     ` Konstantin Gredeskoul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://yhbt.net/unicorn/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAD2+hjctLVtn_+PQALbXMGz_reSSdTue5LW+g3Vy53=CmksYDg@mail.gmail.com' \
    --to=kig@wanelo.com \
    --cc=mongrel-unicorn@rubyforge.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhbt.net/unicorn.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).