我有一个节点应用程序,它使用express并从mongodb和弹性搜索中获取数据。在我们的生产服务器上,一段时间后,它开始使用CPU 100%,这使得应用程序无响应,我们不得不终止进程以使系统空闲。
我认为存在导致此问题的特定查询(代码)。调试此类问题的最新做法是什么?
答案 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
这将为您提供所有通话的细分,您可以找出哪些功能正在占用这个过程。 (请注意,第二个命令可能需要一些时间。)