Javascript nodejs中长时间运行的请求

Javascript nodejs中长时间运行的请求,javascript,node.js,express,Javascript,Node.js,Express,我想知道是否有什么好的实践可以在nodejs中利用长时间运行的请求? 我正在使用Express.js,一直在想是否有任何方法,我不知道,将一个Express请求移动到不同的node实例或其他地方 我想知道的原因是,if强烈使用CPU,同时阻塞节点中的事件循环。主要问题是,首先,我提取一些数据,然后计算并将缺失的数据插入数据库,然后根据结果提取其他数据,然后再次计算并更新数据库中的其他内容 我没有注意到这个问题,因为到目前为止我是唯一一个使用这个请求的人。但是现在我正在和其他用户一起测试它,如果他

我想知道是否有什么好的实践可以在nodejs中利用长时间运行的请求? 我正在使用Express.js,一直在想是否有任何方法,我不知道,将一个Express请求移动到不同的node实例或其他地方

我想知道的原因是,if强烈使用CPU,同时阻塞节点中的事件循环。主要问题是,首先,我提取一些数据,然后计算并将缺失的数据插入数据库,然后根据结果提取其他数据,然后再次计算并更新数据库中的其他内容

我没有注意到这个问题,因为到目前为止我是唯一一个使用这个请求的人。但是现在我正在和其他用户一起测试它,如果他们中很少有人使用这个请求,整个应用程序会冻结几秒钟。在我的监控工具上,我看到了巨大的CPU使用率(100%-200%lol)

因此,我尝试了集群,但它似乎不起作用。我已经在我的CPU的所有核心上使用了pm2和ran应用程序。由于我的alghoritm的复杂性,我尝试将几个函数移动到工作线程,但看起来这些线程将被非常、非常频繁地使用,我担心会使整个节点实例崩溃

我不知道哪种解决方案最好,也不知道是否有适合Express的好工具可以帮助我卸载/利用这些请求?我还没有参与分区,但看起来这可能会奏效。有没有人在大型项目中使用过这种方法,并且知道这是否是将一个请求分发到多个文件中的解决方案

那么像Bull或Kue这样的工作队列呢?将这些任务推送到队列中是个好主意吗?我从来没有使用过这样的工具,我在问,因为我不知道这是否有意义


干杯

如果您有数据,您可以使用传入的HTTP请求将数据发送给用户。 但如果您没有找到任何数据,可以在HTTP请求中发送空响应

您需要使用队列服务来计算和插入丢失的数据。这个很好


使用redis和蜜蜂队列可以加快后台作业的速度。

谢谢,我不知道这一点。:)