Am Dienstag, 13. August 2013 22:35:42 UTC+2 schrieb Ben Noordhuis:
>
> On Tue, Aug 13, 2013 at 5:04 PM, Jens Himmelreich 
> <[email protected] <javascript:>> wrote: 
> > 
> > Am Montag, 12. August 2013 19:03:27 UTC+2 schrieb Ben Noordhuis: 
> >> 
> >> On Mon, Aug 12, 2013 at 6:05 PM, Jens Himmelreich 
> >> <[email protected]> wrote: 
> >> > Hi, 
> >> > 
> >> > I have a node-server between an nginx-webserver (static content) and 
> an 
> >> > varnish. 
> >> > Behind the varnish are two application-server for search and 
> >> > cart-hosting. 
> >> > The 
> >> > node-machine has 4 cores. Every machine has load 0.1 except the 
> >> > node-machine. 
> >> > It has a load of 4.0. The node-application is an express-application 
> >> > running 
> >> > in 
> >> > a node-cluster with 4 workers. http.globalAgent.maxSockets is set to 
> >> > 400. 
> >> > Does anyone know why the load is high? 
> >> 
> >> Because it's doing a lot?  Your post is too light on details to really 
> >> make informed suggestions.  Try profiling your application to see 
> >> where it's spending its time. 
> > 
> > 
> > I see. I had to do a profiling. It's a little bit complecated, because 
> we 
> > use 
> > coffeescript. The --nodejs --prof Parameters won't went to the workers. 
>
> --prof works with the cluster module, that's something I fixed a while 
> ago. 
>
> If you're running v0.10 or v0.11, node.js writes out <n> v8-%p.log 
> files, where <n> is the number of workers and %p the worker's PID. 
>
> > The global coffee is used, which I could instrument. I tried it without 
> > the cluster - to get a quick result for --prof - and I see that the load 
> > is going to 0.02. So it seems to be a problem of the cluster. 
> > 
> > (I know, I will do the profiling.) Are there experiences with a cluster- 
> > load which rise to 1 per cpu? 
>
> Usually when people see spikes like that with the cluster module, it's 
> because they're sending huge messages between processes. 
>
> `process.send(msg)` serializes `msg` to JSON, then deserializes it 
> again on the other end.  If msg is a big array or object, that 
> consumes lots of memory and CPU time. 
>
> > best regards 
> > jens 
>

Hi,

I have done my profiling-homework. (Your hint about sending big messages
is very interesting!)

The master (5% CPU) is doing the following:

 [Shared libraries]:
   ticks  total  nonlib   name
  2408880   99.9%    0.0%  /lib/libc-2.11.3.so
   2029    0.1%    0.0%  /usr/local/bin/node-p
     39    0.0%    0.0%  /lib/libpthread-2.11.3.so
      5    0.0%    0.0%  ffffffffff600000-ffffffffff601000
      2    0.0%    0.0%  /usr/lib/libstdc++.so.6.0.13
      1    0.0%    0.0%  7fff11fb6000-7fff11fb7000

[Bottom up (heavy) profile]:
  Note: percentage shows a share of a particular caller in the total
  amount of its parent calls.
  Callers occupying less than 2.0% are not shown.

   ticks parent  name
  2408880   99.9%  /lib/libc-2.11.3.so 


And the every worker (100% CPU) is doing the following:

 [Shared libraries]:
   ticks  total  nonlib   name
  1462783   60.7%    0.0%  /lib/libc-2.11.3.so
  764186   31.7%    0.0%  ffffffffff600000-ffffffffff601000
  108276    4.5%    0.0%  /usr/local/bin/node-p
  38058    1.6%    0.0%  7fff8c57d000-7fff8c57e000
  30770    1.3%    0.0%  /lib/librt-2.11.3.so
    366    0.0%    0.0%  /lib/libpthread-2.11.3.so
     21    0.0%    0.0%  /usr/lib/libstdc++.so.6.0.13
      2    0.0%    0.0%  /lib/libm-2.11.3.so

[JavaScript]:
   ticks  total  nonlib   name
    295    0.0%    6.8%  LazyCompile: *exports.flatten.flatten 
/srv/fricke/nodeshared/node_modules/coffee-script/lib/coffee-script/helpers.js:70
    187    0.0%    4.3%  KeyedLoadIC: A keyed load IC from the snapshot
    162    0.0%    3.7%  Stub: CEntryStub
    150    0.0%    3.4%  LazyCompile: *exports.Base.Base.eachChild 
/srv/fricke/nodeshared/node_modules/coffee-script/lib/coffee-script/nodes.js:179
    111    0.0%    2.5%  LazyCompile: walk 
/srv/fricke/nodeshared/node_modules/connect-assets/node_modules/snockets/node_modules/uglify-js/lib/process.js:207
     83    0.0%    1.9%  LazyCompile: ToString native runtime.js:550
     82    0.0%    1.9%  LazyCompile: parse 
/srv/fricke/nodeshared/node_modules/coffee-script/lib/coffee-script/parser.js:485
     71    0.0%    1.6%  Stub: KeyedLoadElementStub
     68    0.0%    1.6%  Builtin: A builtin from the snapshot {4}
     63    0.0%    1.4%  LazyCompile: 
*exports.Base.Base.updateLocationDataIfMissing 
/srv/fricke/nodeshared/node_modules/coffee-script/lib/coffee-script/nodes.js:242
     61    0.0%    1.4%  LazyCompile: *DoConstructRegExp native regexp.js:35
     57    0.0%    1.3%  Stub: InstanceofStub_INLINE
[...]

[Bottom up (heavy) profile]:
  Note: percentage shows a share of a particular caller in the total
  amount of its parent calls.
  Callers occupying less than 2.0% are not shown.

   ticks parent  name
  1462783   60.7%  /lib/libc-2.11.3.so

  764186   31.7%  ffffffffff600000-ffffffffff601000

  108276    4.5%  /usr/local/bin/node-p


Do you see any problematic pattern? Should I post the whole profile?
If I don't use the cluster the node runs with Load 0.02
At the moment we try to use nginx as balance and separate node-processes
without the cluster-module.


best regards
jens himmelreich

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to