Node API 占用 100% CPU,node-tick-processor 输出看起来很神秘
Posted
技术标签:
【中文标题】Node API 占用 100% CPU,node-tick-processor 输出看起来很神秘【英文标题】:Node API taking 100% CPU, node-tick-processor output looks cryptic 【发布时间】:2013-07-15 16:59:14 【问题描述】:我有一个通常可以很好地处理流量的节点 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
【问题讨论】:
什么版本的节点? 0.10.4;更新了我的帖子。 看来你删掉了 GC 的使用。那是多少?另外,您能否提供代码/负载测试的链接。这样帮忙会容易得多。 【参考方案1】:对于那些仍然来到这里的人,这是在系统节点模块中的 SSL 处理代码的某个地方引起的。我重新配置了我的堆栈以在 nginx 进行 SSL 终止,并在节点级别使用基本的 HTTP 处理,这个问题完全消失了。
【讨论】:
以上是关于Node API 占用 100% CPU,node-tick-processor 输出看起来很神秘的主要内容,如果未能解决你的问题,请参考以下文章
如何找出 Node.js 服务器 CPU 100% 的原因?
node.js 应用程序突然以 100% 加载 CPU 并挂起