gpt4 book ai didi

node.js - NodeJS 100% cpu 使用率 - epoll_wait

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:31 25 4
gpt4 key购买 nike

我试图找出为什么我的 nodejs 应用程序突然使用 100% 的 cpu。该应用程序有大约 50 个并发连接,并在 ec2 微型实例上运行。

下面是输出:strace -c node server.js

^C% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
87.32 0.924373 8 111657 epoll_wait
6.85 0.072558 3 22762 pread
2.55 0.026965 0 146179 write
0.92 0.009733 0 108434 1 futex
0.44 0.004661 0 82010 7 read
0.44 0.004608 0 223317 clock_gettime
0.31 0.003244 0 172467 gettimeofday
0.31 0.003241 35 93 brk
0.20 0.002075 0 75233 3 epoll_ctl
0.19 0.002052 0 23850 11925 accept4
0.19 0.001997 0 12302 close
0.19 0.001973 7 295 mmap
0.06 0.000617 4 143 munmap

这里是输出:node-tick-processor

 [Top down (heavy) profile]:
Note: callees occupying less than 0.1% are not shown.

inclusive self name
ticks total ticks total
669160 97.4% 669160 97.4% /lib/x86_64-linux-gnu/libc-2.15.so

4834 0.7% 28 0.0% LazyCompile: *Readable.push _stream_readable.js:116
4750 0.7% 10 0.0% LazyCompile: *emitReadable _stream_readable.js:392
4737 0.7% 19 0.0% LazyCompile: *emitReadable_ _stream_readable.js:407
1751 0.3% 7 0.0% LazyCompile: ~EventEmitter.emit events.js:53
1081 0.2% 2 0.0% LazyCompile: ~<anonymous> _stream_readable.js:741
1045 0.2% 1 0.0% LazyCompile: ~EventEmitter.emit events.js:53
960 0.1% 1 0.0% LazyCompile: *<anonymous> /home/ubuntu/node/node_modules/redis/index.js:101
948 0.1% 11 0.0% LazyCompile: RedisClient.on_data /home/ubuntu/node/node_modules/redis/index.js:541

这是我第一次调试 Node 应用程序。从上面的调试输出中是否可以得出任何结论?错误可能在哪里?

编辑

我的 Node 版本:v0.10.25

编辑2

将 Node 更新为:v0.10.33

这是输出

^C% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
91.81 1.894522 8 225505 45 epoll_wait
3.58 0.073830 1 51193 pread
1.59 0.032874 0 235054 2 write
0.98 0.020144 0 1101789 clock_gettime
0.71 0.014658 0 192494 1 futex
0.57 0.011764 0 166704 21 read

最佳答案

似乎 Node JS v0.10.25 带有事件循环的错误,查看 here .

注意,来自 this github 拉取请求:

If the same file description is open in two different processes, then closing the file descriptor is not sufficient to deregister it from the epoll instance (as described in epoll(7)), resulting in spurious events that cause the event loop to spin repeatedly. So always explicitly deregister it.

作为解决方案,您可以尝试更新您的操作系统或更新 Node JS。

关于node.js - NodeJS 100% cpu 使用率 - epoll_wait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com