如何调试Nodejs导致100%的CPU使用率

时间:2017-01-24 08:35:32

标签: node.js cpu

我有一个节点应用程序,它使用express并从mongodb和弹性搜索中获取数据。在我们的生产服务器上,一段时间后,它开始使用CPU 100%,这使得应用程序无响应,我们不得不终止进程以使系统空闲。

我认为存在导致此问题的特定查询(代码)。调试此类问题的最新做法是什么?

1 个答案:

答案 0 :(得分:3)

使用以下方式启动您的应用:

axios.post('/api/cards', data)
    .then(response => {
        dispatch({
            type: actions.CREATE_CARD_SUCCESS,
            card: response.data
        });
    }).then(() => {
       // this block won't be executed if there is a post error
    }).catch(error => {
        // handle post error
        dispatch({
            type: actions.CREATE_CARD_FAILURE,
            message: error.message
        });
        // if we wished to propagate the error to the caller, skipping
        // subsequent then blocks, we could re-raise it here by throwing it:
        //     throw error;
    }).then(() => {
        // this block will be executed after the catch handler unless
        // it raises another error by throwing an exception
    });

它会在当前目录中转储一个tick文件。使用该应用程序,以便探查器可以收集一些数据。然后停止应用程序,并分析刻度文件:

node --prof app.js

这将为您提供所有通话的细分,您可以找出哪些功能正在占用这个过程。 (请注意,第二个命令可能需要一些时间。)