gpt4 book ai didi

javascript - Nodejs 中长时间运行的请求

转载 作者:行者123 更新时间:2023-12-02 21:26:54 27 4
gpt4 key购买 nike

我想知道是否有任何好的实践如何在nodejs中利用长时间运行的请求?我正在使用 Express.js,并且一直想知道是否有任何方法(我不知道)将快速请求之一移动到 Node 的不同实例或其他东西?

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

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

所以我尝试过聚类,但似乎不起作用。我已经使用 pm2 并在我的 CPU 的所有核心上运行应用程序。由于我的算法很复杂,我尝试将多个函数移动到工作线程,但看起来这些线程会非常非常频繁地使用,我担心整个 Node 实例会崩溃。

我不知道哪种解决方案是最好的,也不知道 Express 是否有任何好的工具可以帮助我卸载/利用这些请求?我还没有深入研究分区,但看起来这可能可行。有没有人在大型项目中使用过它,并且知道这是否可以作为将一个请求分发到多个蜱虫的解决方案?

像 Bull 或 Kue 这样的作业队列怎么样?将这些任务放入队列中是个好主意吗?我从未使用过此类工具,我之所以询问,是因为我不知道这是否有意义。

干杯

最佳答案

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

并且您需要使用队列服务来计算和插入丢失的数据。 bee-queue很好。

将 redis 与 bee-queue 结合使用,可以加快后台作业的速度。

关于javascript - Nodejs 中长时间运行的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60719460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com