使用mongoose时cpu峰值非常大?

使用mongoose时cpu峰值非常大?,mongoose,cpu-usage,Mongoose,Cpu Usage,我的用户集合中有750个用户 我将这段代码用于mongoose,在这个过程中,我获得了难以置信的cpu跳跃98%-103%: var stream = User.find({}).stream(); stream.on('data', function(user) { stream.pause(); user.someObj += (conditionTrue)? do one thing : do another; ...(so

我的用户集合中有750个用户

我将这段代码用于mongoose,在这个过程中,我获得了难以置信的cpu跳跃98%-103%:

 var stream = User.find({}).stream();
        stream.on('data', function(user) {
        stream.pause();
        user.someObj += (conditionTrue)? do one thing : do another;
        ...(some other changes)
        user.save(function(err, doc) {
            stream.resume();
        });
    }).on('error', function(err) {
        console.error(err);
    }).on('close', function() {
        deferred.resolve();
    });

这正常吗?我不这么认为,是吗?这个操作大约需要5秒钟左右,但cpu跳转仍然是一个杀手…

当cpu工作时,它就工作了。这就是CPU监视器告诉你的。如果你说它使用了太多的资源,你需要以某种方式优化你的操作,但是如果这对你来说不是问题,那么这也不是问题,尽管5秒是很长的时间。还要记住,使用100%的CPU并不意味着其他任何东西都不能使用CPU。几十年来,我们已经有了多进程、多线程的公平CPU分配功能。我只说这段代码,没有用户在线暂存区,只有当我运行这段代码时,我才有这个峰值…我的意思是,你已经要求CPU做些什么,所以它正在做。事实上,它没有其他事情可做,因此100%致力于解决您的问题,这是一件好事。如果您的服务器有多个CPU,并且您的程序正在使用所有这些CPU,则意味着它成功地实现了多线程。使用100%的CPU不是问题。如果出现另一个任务,该资源将根据需要共享。别担心。问题是,在给定全部资源时,需要花费5秒的时间。想象一下,如果有10个相同的请求传入,需要多长时间……如果您想要更好的性能,请深入本机驱动程序并使用它。