NodeJS性能问题

时间:2017-05-25 20:00:34

标签: node.js couchbase

我在Ubuntu 14.04上运行使用NodeJS 6.10.3 LTS的API服务器(可靠)。我注意到我的API服务器在c4.large EC2实例上运行时达到~600 reqs / min。最重要的是,我的意思是,我看到CPU上升100%注意,我知道我没有通过使用群集模块充分利用该实例,但现在可以。

我接受了我的API服务器的.cpuprofile转储10秒钟,并注意到每秒,大约300毫秒,探查器显示我的NodeJS代码正在等待(空闲)。

有谁知道(空闲)意味着什么?这是GC问题吗?或者它是我触发的内部(V8)锁定?任何帮助或指向帮助调试此工具的指针都会很好。我正在努力匿名化cpuprofile中的一些堆栈跟踪,以便我可以共享。

我正在使用的软件包主要是ExpressJS 4,Couchbase NodeJS SDK,Socket.IO。代码路径主要是读取请求,并推送到Couchbase。最后通过Views API查询couchbase,并在Socket.IO频道上推送一些聚合数据。所以所有漂亮的I / O异步友好的东西。我已经确定我没有调用任何同步功能。在cpu配置文件中(空闲)之前没有函数调用模式。

1 个答案:

答案 0 :(得分:0)

它也可能只是I / O等待,这意味着没有任何套接字已经准备好读取数据,因此花费的时间是空闲的。如果您使用的是负载测试库,则应检查请求是否在一秒钟内均匀分布。

查看https://www.npmjs.com/package/gc-stats以查看GC数据。如果问题结果与GC有关,那么有标志可以增加堆空间,并在GC运行时进行更改。