采用100%CPU的节点API,节点 - 滴答处理器输出看起来很神秘

时间:2013-07-15 16:59:15

标签: performance node.js api debugging

我有一个节点API,通常可以很好地处理流量。但是,在我们的高峰时期,它进入这种状态,它开始使用100%CPU并需要重新启动。重新启动后,它会在接下来的几天内恢复正常状态。

使用负载测试网站,我已经能够重现此问题。我负载测试的请求非常简单,所以我担心问题出在我正在使用的第三方库中。

我是调试节点的新手,我不知道如何从node-tick-processor输出以下内容。任何人都可以破译这个吗?

更新:我正在运行节点v0.10.4

[Unknown]:
ticks  total  nonlib   name
   5    0.0%

[Shared libraries]:
ticks  total  nonlib   name
11943   49.1%    0.0%  /lib64/libc-2.12.so
10754   44.2%    0.0%  /usr/local/bin/node
  314    1.3%    0.0%  /lib64/libpthread-2.12.so
   50    0.2%    0.0%  7fff318b4000-7fff318b5000
    5    0.0%    0.0%  /lib64/libm-2.12.so
    3    0.0%    0.0%  /usr/lib64/libstdc++.so.6.0.17

[JavaScript]:
ticks  total  nonlib   name
 40    0.2%    3.2%  LazyCompile: ~read tls.js:397
 36    0.1%    2.8%  LazyCompile: *EventEmitter.addListener events.js:126
 29    0.1%    2.3%  LazyCompile: *Readable.read _stream_readable.js:226
<clipped>

[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
11943   49.1%  /lib64/libc-2.12.so
10754   44.2%  /usr/local/bin/node
 8270   76.9%    LazyCompile: *use tls.js:222
 5162   62.4%      LazyCompile: ~read tls.js:397
 5074   98.3%        LazyCompile: *Readable.read _stream_readable.js:226
 3396   66.9%          LazyCompile: ~write tls.js:315
 3396  100.0%            LazyCompile: *Writable.write _stream_writable.js:155
 1063   20.9%          LazyCompile: *write tls.js:315
 1063  100.0%            LazyCompile: *Writable.write _stream_writable.js:155
 370    7.3%          LazyCompile: *Writable.write _stream_writable.js:155
 370  100.0%            LazyCompile: ~write _stream_readable.js:546
 186    3.7%          LazyCompile: ~callback tls.js:753
 180   96.8%            LazyCompile: *onclienthello tls.js:748
 6    3.2%            LazyCompile: ~onclienthello tls.js:748
 2417   29.2%      LazyCompile: *read tls.js:397
 2417  100.0%        LazyCompile: *Readable.read _stream_readable.js:226
 2320   96.0%          LazyCompile: *Writable.write _stream_writable.js:155
 2315   99.8%            LazyCompile: ~write _stream_readable.js:546
   57    2.4%          LazyCompile: ~callback tls.js:753
   57  100.0%            LazyCompile: *onclienthello tls.js:748
  691    8.4%      LazyCompile: *Readable.read _stream_readable.js:226
  675   97.7%        LazyCompile: *write tls.js:315
  675  100.0%          LazyCompile: *Writable.write _stream_writable.js:155
  674   99.9%            LazyCompile: ~write _stream_readable.js:546

1 个答案:

答案 0 :(得分:0)

对于那些仍然来到这里的人来说,这是由系统节点模块中的SSL处理代码引起的。我重新配置我的堆栈以在nginx上执行SSL终止,并在节点级别使用基本的HTTP处理,这个问题完全消失了。